home *** CD-ROM | disk | FTP | other *** search
Text File | 1992-01-06 | 177.2 KB | 4,860 lines |
- ===============================================
-
- @(#) OKAMI SHELL VERSION 1.4 - KOMMANDO-REFERENZ
-
- ===============================================
- Stand: 8.12.91
-
-
- BITTE ERST DIE DATEIEN README UND OKAMI.DOC LESEN!
-
-
-
- Dies ist eine Referenzdatei, die man sich einmal kurz durchlesen sollte,
- um zu sehen, was die Shell alles zu bieten hat. Die einzelnen Abschnitte
- können während der Arbeit mit der Shell durch Druck auf die Help-Taste
- angesehen werden. Dazu muß der Dateiname dieser Datei in der Shellvariablen
- HELPFILE gespeichert sein.
-
- Zu jedem Kommando wird die Syntax des Kommandos sowie, falls vorhanden, die
- zum Laufen des Kommandos notwendigen Dateien angegeben.
- Für die Syntaxschreibweise gilt:
- Angaben in [] (eckigen Klammern) koennen, muessen aber nicht
- angegeben sein.
- Angaben in {} (geschwungenen Klammern) koennen beliebig oft
- (auch null mal) angegeben sein.
- Von durch | (senkrechten Strich) getrennten Angaben wird
- jeweils eine erwartet.
- Numerische Werte koennen in folgender Form angegeben werden:
- 1234 entspricht der dezimalen Zahl 1234
- 01234 entspricht der oktalen Zahl 1234 (=668 dezimal)
- 0x1234 entspricht der Hex-Zahl 1234 (=4660 dezimal)
- %1011 entspricht der Binärzahl 1011 (=11 dezimal)
- !A entspricht dem Ascii-Code von A (=65 dezimal)
- Vor jedem dieser Formate kann ein Minuszeichen stehen, um eine negative Zahl
- anzuzeigen. ACHTUNG: Bei Kommandos, die Flags benutzen, wird dieses Minus-
- zeichen als Einleitung der Flags und daher die folgende Zahl als die Flags
- angesehen, was normalerweise in einem Syntaxfehler endet. Daher muß in sol-
- chen Fällen die Zahl in (einfache oder doppelte) Anführungszeichen gesetzt
- werden.
-
- Steuersequenzen, z.B. VT52-Codes, können mit dem Fluchtsymbol ^ (Dach)
- benutzt werden. Die Verwendung des Fluchtsymbols ist unter dem internen
- Kommando "echo" beschrieben. Das dort gesagte gilt auch für alle anderen
- Kommandos.
-
- Flags können einzeln, aber auch in Gruppen durch das jeweilige Kennungs-
- zeichen eingeleitet werden, z.B. sind äquivalent:
- wc -lcn
- und wc -l -c -n
-
- Dies gilt nicht, wenn die Flags aus mehr als einem Zeichen bestehen oder
- wenn zusätzliche Informationen angegeben werden, wie z.B. bei format oder
- rsconf. Außerdem erlauben einige Kommandos nicht die Zusammenfassung oder
- die Einzelschreibweise, dies ist dann jeweils angegeben.
-
- Es gibt einige Flags, die sich eingebürgert haben und bei einigen Kommandos
- (nicht bei allen) dieselbe Bedeutung haben, diese sind:
-
- -a (alle) (das Kommando tut etwas für alle in Frage
- kommenden Argumente. Bsp.: pwd, ls)
- -i (interaktiv) (das Kommando fragt den Anwender nach
- gewissen Dingen. Bsp.: rm)
- -l (lang) (gibt zusätzliche oder ausführlichere Informa-
- tionen. Bsp.: ls, ver)
- -v (verbose) (das Kommando sagt, was es tut, Bsp.: format)
- -q (quiet) (das Kommando erzeugt keine Ausgabe, oder:)
- (query) (wie -i)
- -f (fast) (das Kommando umgeht Sicherheitsabfragen u.ä.,
- um so schnell wie möglich zu laufen. Bsp.:
- rm, shutdown)
- -r (rekursiv) (das Kommando läuft rekursiv über den Datei-
- baum. Bsp: rm)
-
- Hinweis: Alle Angaben über Shellscripts (z.B. "Verwendung nur in Shellscripts
- erlaubt") gelten ebenso für Shellfunktionen.
-
-
- 0) Nicht-dokumentierte Kommandos:
-
- Gibt es, na klar. Sie werden hier nicht erklärt, da sie sonst ja nicht mehr
- nicht-dokumentiert währen. Mit `cmds' kann man die Namen aller Kommandos heraus-
- finden, auch die der nicht-dokumentierten. Man kann sie auch benutzen, aber
- man sollte sich nicht darauf verlassen, daß sie in späteren Versionen der
- Shell noch genauso wie in der jetzigen funktionieren oder überhaupt noch vor-
- handen sind.
- Wer das Zauberwort findet, hat gewonnen.
-
-
- 1) Interne Kommandos:
-
- Interne Kommandos werden aufgerufen, indem man am Shell-Prompt den Namen
- des Kommandos, gefolgt von den Parametern, eingibt.
-
- Rückgabewerte:
- Jedes interne Kommando gibt einen numerischen Wert zurück, der sich nach Aus-
- führung des Programms in der Shellvariablen "?" befindet. Außerdem wird
- der Rückgabewert von den Kommandos if und while benutzt.
- Normalerweise geben die Kommandos -1 zurück, wenn ein Syntaxfehler beim
- Aufruf oder ein anderer Fehler aufgetreten ist, und 0, wenn bei der Aus-
- führung keine Fehler aufgetreten sind. Daher werden die Rückgabewerte der
- internen Kommandos im folgenden nur angeführt, wenn sie von dieser Konven-
- tion abweichen.
-
-
- Folgende interne Kommandos sind implementiert:
-
-
- -----
- . - Eine Datei als Shellscriptausführen
-
- Syntax: . Dateiname
-
- Die angegebene Datei wird als Shellscript ausgeführt. Es muß der voll-
- ständige Dateiname (relativ oder absolut) angegeben werden. Die Shell-
- variablen PATH und SEXT sind ohne Wirkung.
- Beispiele:
- . $HOME\profile
- führt das Login-Script aus.
- . hallo.sh
- führt die Datei hallo.sh als Shellscript aus.
- . hallo
- führt die Datei hallo als Shellscript aus.
-
- -----
- [ - SIEHE test
-
- -----
- adr - Diverse Systemadressen ausgeben
-
- Syntax: adr
-
- Ausgabe der folgenen Adressen:
- argv Adresse des Argumentenvektors der Shell
- Command line Adresse der Kommandozeile (Parameter)
- Environment Adresse des Environment-Strings der Shell
- VarTable Adresse der Variablen-Tabelle der Shell
- Commands Adresse der Kommandotabelle der Shell
- AdrTab Adresse der Tabelle mit den auszugebenden Adressen
- Physbase Adresse des physikalischen Bildschirms
- Logbase Adresse des logischen Bildschirms
- DTA Adresse des Disk-Transfer-Bereiches
- Phystop Physikalisches Ende des RAM-Speichers
- (Adresse des ersten nicht vorhandenen Bytes)
- Membot Unterste Adresse des verfügbaren Speichers
- Memtop Oberste Adresse des verfügbaren Speichers
- Basepage Adresse der Basepage der Shell
- Cookie Jar Die Adresse des Cookie Jars.
- _StdIn Adresse der aktuellen Eingabe-File-Struktur.
- _StdOut Adresse der aktuellen Ausgabe-File-Struktur.
- _StdErr Adresse der aktuellen Fehlerausgabe-File-Struktur.
- _shell_p Adresse der Shell-Funktion.
-
- Diese Adressen sind z.T. nur für den Programmierer der Shell von Bedeu-
- tung (z.T nicht mal das). Die Inhalte der Adressen können mit memex ausge-
- lesen werden.
-
- Siehe auch: basep
- cookie
- memex
-
- -----
- alert - GEM-Alertbox erzeugen
-
- Syntax: alert Icon Default Boxtext Buttontext [Var]
-
- Dieses Kommando macht die GEM-Alert-Boxen von der Shell aus zugänglich. Da
- es sich um ein AES-Feature handelt, kann dieses Kommando nur benutzt werden,
- wenn vorher gon aktiviert wurde.
- Die Parameter haben folgende Bedeutung:
-
- Icon
- das in der Box anzuzeigende Icon. Zulässige Werte sind die
- Strings "none", "excl", "ques" und "stop" sowie die Zahlen
- 0 bis 3.
- Default
- die Nummer des Default-Buttons, also des Buttons, der durch
- Druck auf Return angewählt werden kann. Zulässige Werte sind
- 1 für den linken, 2 für den mittleren und 3 für den rechten
- Button.
- Boxtext
- der in der Box anzuzeigende Text. Muß in Anführungszeichen
- eingeschlossen sein, wenn er Leerzeichen enthält. Die Zeilen
- müssen durch ^| getrennt sein. (Nur | genügt nicht, wirkt
- als Pipe.)
- Buttontext
- analog dazu die in den Buttons anzuzeigenden Texte, getrennt
- durch ^|.
- Var
- ein beliebiger Variablenname für das Ergebnis.
-
- Das Ergebnis der Auswahl, also die Nummer des angwewählten Buttons, wird als
- Rückgabewert des Kommandos und, falls angegeben, in der Variablen Var zurück-
- gegeben. Es steht 1 für den linken, 2 für den mittleren und 3 für den rechten
- Button.
-
- Beispiele:
-
- Die gleiche Wirkung haben:
- alert none 1 "Ich bin die Okami-Shell" "Schön"
- alert 0 1 "Ich bin die Okami-Shell" Schön
-
- Sicherheitsabfrage:
- alert ques 1 "Die Datei $FILE existiert bereits.^|Soll sie gelöscht werden?" ^
- "Ja^|Nein" ERG
- if [ $ERG = 1 ]
- then
- rm $FILE
- fi
-
- -----
- alias - Einfache Shellfunktionen erzeugen
-
- Syntax: alias Name String
-
- Dieses Kommando ist ein Ersatz für das Alias-Konzept der C-Shell, das von
- der Okami-Shell nicht unterstützt wird (da es es in dem Vorbild der Okami-
- Shell, der Bourne-Shell, auch nicht gibt). Es dient dazu, Shellscripts aus-
- zuführen, die für eine Shell geschrieben wurde, die über alias verfügt
- (z.B. die Gulam- oder Mastershell).
- Das Alias-Konzept sieht einen Makroprozessor vor, der eine eingegebene
- Kommandozeile aufgrund der aliasse expandiert. In der Okami-Shell ist dieses
- Konzept überflüssig, da man jedes alias durch eine Shellfunktion darstellen
- kann. (Genauso wie man in C jedes Präprozessor-Makro durch eine Funktion er-
- setzen kann, aber nicht umgekehrt.)
- Das Kommando "alias Name String" ist äquivalent zu:
-
- Name()
- {
- String $*
- }
-
- , d.h. es wird eine Shellfunktion mit dem angegebenen Namen erzeugt, die
- den angegebenen String zusammen mit dem Rest der Kommandozeile ausführt.
-
- Um den absoluten Namen eines externen Kommandos zu speichern, um die Such-
- zeit zu verringern (z.B. "alias cc c:/compiler/cc.ttp"), sollte man statt-
- dessen lieber das hash-Kommando benutzen ("hash cc c:/compiler/cc.ttp").
-
- Beispiele:
-
- alias l ls -l definiert eine Shellfunktion namens l, die sich wie
- ls -l verhält. "l *.c" ist dann also äquivalent zu
- "ls -l *.c".
- alias cp !cp -v sorgt dafür, daß alle Kopieroperationen im Verbose-
- modus ablaufen. Wichtig ist das Ausrufezeichen vor
- cp im Funktionsrumpf, das dafür sorgt, daß hier das
- interne Kommando cp und nicht die Shellfunktion cp
- aufgerufen wird.
-
- Es kann nicht garantiert werden, daß sich die mit alias geschaffenen Shell-
- funktionen in allen Sonderfällen (Verschachtelungen etc.) genauso verhalten
- wie ein alias auf einer Shell, die alias-Expansion durchführt.
-
- Siehe auch: hash
- unalias (unset)
-
- -----
- backup - Dateien auf Diskette sichern
-
- Syntax: backup [-nNrq] [Laufwerk]
-
- Dient zum Sichern von Dateien auf Diskette. Es werden von StdIn Datei-
- namen eingelesen. Diese Dateien werden auf dem angegebenen Laufwerk oder,
- falls kein Laufwerk angegeben ist, nach A:\ gespeichert. Dabei werden alle
- benötigten Ordner angelegt.
- Alle von StdIn eingelesenen Zeilen werden als Dateinamen betrachtet, mit
- der Ausnahme von Zeilen, die mit einem Doppelkreuz (#) beginnen. Diese
- werden als Kommentarzeilen betrachtet. Leerzeilen werden ignoriert.
- Wenn auf dem Ziellaufwerk kein Platz mehr für weitere Dateien ist, fragt
- backup nach der nächsten Diskette. Die Anfrage wird durch Druck auf ENTER
- beantwortet; drückt man stattdessen ESC, wird backup abgebrochen.
- Die laufende Nummer der jeweiligen Diskette wird im Bootsektor der
- Diskette abgelegt (nur bei Disketten, also Laufwerk A: oder B:.)
- Nach dem Ende des Backups wird die Anzahl der Dateien, Bytes und benutzter
- Disketten ausgegeben.
-
- Flags:
- -n Es werden keine Daten in den Bootsektor geschrieben.
- -N Es werden keine Daten kopiert. Das ist nützlich, um
- herauszufinden, wieviele Disketten für ein Backup be-
- nötigt werden. Die Disketten müssen in der vorgesehenen
- Reihenfolge eingelegt werden, werden aber nicht beschrieben.
- Impliziert -n.
- -r Es werden keine Ordner auf dem Ziellaufwerk angelegt, alle
- Dateien landen im Wurzelverzeichnis des Ziellaufwerks.
- -q Es wird angenommen, daß die erste Diskette bereits im Lauf-
- werk eingelegt ist, daher entfällt die Frage nach dem
- Einlegen der ersten Diskette. Dies ist nützlich, wenn Daten
- statt auf eine Diskette auf eine Festplatte gesichert
- werden.
-
-
- Beispiele:
- backup <files.lst
- Aus der Datei files.lst werden Namen von Dateien gelesen,
- die auf Diskette A: gesichert werden. Die Datei files.lst
- kann Kommentarzeilen enthalten, die mit # beginnen.
-
- find d:\ * | backup
- sichert alle Dateien von Partition D: auf Diskette A:.
-
- ls *.c | backup -q e:\backup\source
- sichert alle C-Quelldateien vom aktuellen Directory in
- das Directory e:\backup\source. Da E: keine Diskette
- ist, werden keine Daten in den Bootsektor geschrieben.
- Es erfolgt keine Nachfrage zum Einlegen einer Diskette.
-
- find e:\ *.c | backup -N b:
- findet heraus, wieviele Disketten zum Sichern aller C-
- Quelldateien von Partition E: benötigt würden. Es wird
- Diskettenlaufwerk B: benutzt.
-
- Rückgabewert:
- -1 Aufruffehler
- sonst Anzahl der gesicherten Dateien.
-
- -----
- basename - Basis-Dateinamen ermitteln
-
- Syntax: basename File [Extender]
-
- Ausgabe des reinen Dateinamens ohne Laufwerk und Ordner. Wenn ein Extender
- angegeben wird und der Dateiname mit diesem Extender endet, wird der Basis-
- name ohne diesen Extender ausgegeben. Datei muß es sich nicht unbedingt um
- den 3-Zeichen-TOS-Dateitypextender handeln, sondern um eine beliebig lange
- Zeichenkette, die vom Ende des Basisnamens abgeschnitten wird.
-
- Beispiele: ergibt:
- basename d:/shell/sh.ttp sh.ttp
- basename sh.ttp sh.ttp
- basename d:/shell/sh.ttp .ttp sh
- basename d:/compiler iler comp
-
- Anmerkung: Die Arbeitsweise dieses Kommandos hängt in keiner Weise davon ab,
- ob die angegebene Datei existiert. Das gilt auch für die Kommandos dirname,
- drvname, extname und fullname.
-
- Siehe auch: dirname
- drvname
- extname
- fullname
-
- -----
- basep - Basepage analysieren
-
- Syntax: basep [-pa] [Adresse]
-
- Mit diesem Kommando kann:
- 1) die Adresse der Basepage des Shell-Programms herausgefunden werden,
- 2) diese oder eine andere Basepage analysiert werden,
- 3) wahlweise stattdessen die Adresse der Parent-Basepage gefunden oder
- diese analysiert werden.
-
- Hierbei bedeutet "analysiert", daß die einzelnen in der Basepage enthaltenen
- Adressen und sonstigen Angaben ausgegeben werden.
-
- Wenn keine Adresse angegeben ist, wird die Basepage des aktuellen Shell-
- Prozesses benutzt.
-
- Bei der Analyse werden alle Angaben, auch die Längenangaben der einzelnen
- Programmsegmente, in hexadezimaler Schreibweise ausgegeben. Das interne
- Kommando num kann für die Konvertierung in dezimale Schreibweise benutzt
- werden.
-
- Flags:
- -a Wenn dieses Flag angegeben ist, wird die Analyse der Base-
- page ausgegeben. Ansonsten wird nur die Adresse ausgegeben.
- -p Wenn dieses Flag angegeben ist, wird die Parent-Basepage
- benutzt.
-
- Beispiele:
- 1) Herausfinden der aktuellen Basepage-Adresse:
- basep
-
- 2) wie 1), aber Umformung ins Dezimalsystem:
- basep | xargs num -d
-
- 3) Herausfinden der Adresse der Basepage des aufrufenden Programms:
- basep -p
-
- 4) Analyse der Basepage an Adresse 0x65A40:
- basep -a 0x65a40
- Diese Adresse kann z.B. von dem Kommando exec oder ps stammen.
-
- Siehe auch: exec
- ps
-
- -----
- bombs - Erzeugt Bomben
-
- Syntax: bombs Anzahl
-
- Mit diesem Kommando wird die Shell mit der angegebenen Anzahl von Bomben
- beendet. Die Anzahl muß größer oder gleich 2 sein. Es erfolgt ein Sprung
- an die Adresse, die in dem entsprechenden Vektor (Adresse 4*Anzahl) ange-
- geben ist.
- Dieses Kommando kann z.B. benutzt werden, um einen Debugger oder eine Umlen-
- kung der Exception-Vektoren zu testen.
-
- -----
- break - SIEHE while
-
- -----
- cat - Dateien anzeigen
-
- Syntax: cat [-bR] {File}
-
- Kopiert Daten von StdIn oder, falls angegeben, von File, nach StdOut.
-
- Wenn das Flag -b angegeben ist, werden die Dateien im Binärmodus geöffnet,
- es findet also keine Übersetzung von CR/LF-Sequenzen statt. Das ist sinn-
- voll, wenn man Binärdateien wie z.B. ausführbare Programmdateien o.ä. an-
- einanderhängen will. Damit das funktioniert, sollte man dann aber auch
- das Shell-Flag u setzen (siehe "set").
-
- Wenn das Flag -R angegeben ist, werden alle Buchstaben um 13 Zeichen ver-
- schoben (rot13). Dies ist ein hin und wieder unter Unix benutztes, simples
- Verschlüsselungsverfahren, um Dateien auf dem ersten Blick unlesbar zu
- machen. Klartext kann mit -R verschlüsselt werden, verschlüsselter Text
- wird mit -R wieder zu Klartext. Es sind nur Buchstaben (A...Z und a...z)
- betroffen - Ziffern und Sonderzeichen bleiben unverändert.
-
- Bsp.:
- 1) cat test.dat
- gibt den Inhalt der Datei test.dat auf dem Bildschirm aus.
-
- 2) cat test.dat >PRT:
- druckt die Datei test.dat aus.
-
- 3) cat dat.1 dat.2 dat.3 > dat.123
- hängt die Dateien dat.1 bis dat.3 aneinander und schreibt das Ergebnis
- in die Datei dat.123.
-
- 4) set +u
- cat -b test1.prg test2.prg >test.bin
- arbeitet im Binärmodus, wodurch keine Übersetzung von CR/LF-Sequenzen in
- den Dateien stattfindet.
-
- Die Verwendung von "cat >file", um Tastatureingaben in eine Datei zu schrei-
- ben, ist nicht möglich, da bei der Eingabe auch das Tastaturecho in die Datei
- umgeleitet würde.
-
- Siehe auch: crypt
- raw
-
- -----
- cd - Wechsel des aktuellen Directories
-
- Syntax: cd [Pfad]
-
- Setzt das aktuelle Arbeitsverzeichnis auf $HOME oder, falls angegeben,
- auf Pfad. Pfad kann erweiterte Wildcards enthalten.
- Wenn Pfad nicht mit einem Backslash (\ oder /) beginnt oder ein entsprechendes
- Verzeichnis nicht existiert, werden die in der Shellvariablen CDPATH gespei-
- cherten Pfade nach einem entsprechenden Verzeichnis durchsucht. Das aktuelle
- Arbeitsverzeichnis wird dann auf das erste gefundene Verzeichnis eingestellt.
-
- Beispiele:
- cd
- entspricht cd $HOME
- cd e:\okami\test
- Wechsel von Laufwerk und Verzeichnis
- cd test
- Wechsel in den Ordner "test" im aktuellen Verzeichnis
- cd ..
- Wechsel ins Parent-Directory des aktuellen Verzeichnisses
- cd t*
- Wechsel in den ersten Ordner, dessen Name mit t beginnt
-
- -----
- chmod - Dateiattribute ändern
-
- Syntax: chmod [(+|-)cdrhsvf] File
-
- Flags: Bei Verwendung von + wird das entsprechende Flags gesetzt, bei
- Verwendung von - wird es geloescht. Die Flags bedeuten:
- c File written and closed (Archivstatus)
- d Directory (Ordner)
- r Read-Only (nur lesen)
- h Hidden (unsichtbar; nur für Dateien)
- s System File (Systemdatei)
- v Volume Lable (Diskettenname)
- f Fastload (Fastload-Bit des Programmheaders,
- nur für ausführbare Programmdateien)
-
- Die Flags können beliebig kombiniert werden, allerdings geben nicht alle
- Kombinationen einen Sinn. Das Betriebssystem verbietet gewisse Kombinationen
- wie z.B. das Verstecken von Ordnern.
-
- Das Flag f betrifft das Fastload-Bit im Programmheader. Es kann nur für
- ausführbare Programmdateien benutzt werden (eine Datei gilt als soche, wenn
- ihr erstes Wort 0x60a ist), bei anderen Dateien erscheint eine Fehlermeldung.
- Das Fastload-Bit bewirkt, daß nach dem Laden des Programms nicht der gesamte
- Speicher, sondern nur das BSS-Segment gelöscht wird.
-
- Wenn eine Datei einmal das Volume Label-Flag hat, kann dieses nicht mehr
- entfernt werden, da die Datei dadurch von der normalen Dateisuche
- (Fsfirst/next) ausgeschlossen ist.
-
- Das Einstellen der Ausführbarkeit ist (anders als in Unix) mit chmod nicht
- möglich, da hierfür der Dateinamen-Extender verantwortlich ist.
-
- Die Einstellung der Attribute einer Datei kann mit ls -lf angesehen werden.
-
- -----
- clipb - Initialisierung des GEM-Clipboards
-
- Syntax: clipb [Pfad]
-
- Das Clipboard (oder Scrap-Directory) ist eine Einrichtung des Betriebssystems,
- das die temporäre Datenablage und den Datenaustausch zwischen mehreren Pro-
- grammen unterstützen soll. Es besteht aus nichts weiter als einem Directory,
- dessen Name vom AES gespeichert wird. Programme, die das Clipboard benutzen,
- müssen sich diesen Namen vom AES mitteilen lassen und können, wenn sie sich
- an einige Konventionen halten, mühelos mit anderen Programmen Dateien aus-
- tauschen.
-
- Die Okami-Shell unterstützt das Clipboard auf folgende Weise:
-
- 1) Nach Programmstart wird die Shell-Variable CLIPDIR mit dem Wert
- "X:\scrapdir\scrap.*" initialisiert, wobei X: das Bootlaufwerk ist. Das
- Atari-Profibuch schlägt diesen Pfad als Clipboard vor. Dies hat noch nichts
- mit AES zu tun, da AES zu diesem Zeitpunkt noch gar nicht initialisiert ist.
- 2) Wenn die Shell mit dem Kommando gon bei AES angemeldet wird, wird der
- tatsächliche Clipboard-Pfad ermittelt und, falls vorhanden, in CLIPDIR ab-
- gelegt. Wenn noch kein Clipboard-Pfad definiert worden ist, wird der
- Inhalt von CLIPDIR als solcher festgelegt.
- 3) Das Kommando clipb legt (falls vorhanden) seinen Parameter in CLIPDIR
- ab ("clipb c:/scrap/*" beinhaltet also "CLIPDIR=c:/scrap/*"). Falls gon
- aktiv ist, wird danach der (ggfs. neue) Wert von CLIPDIR dem AES als
- Clipboard-Directory mitgeteilt. Außerdem wird der zugehörige Pfad an-
- gelegt.
-
- Eine korrekte Initialisierung des Clipboards sieht also so aus:
-
- gon
- clipb
-
- oder, wenn man den Pfad ändern will:
-
- gon
- clipb g:/scrap/scrap.*
-
- Diese Zeilen sollte man in sein Profile setzen, wenn man Programme benutzen
- will, die das Clipboard verwenden.
- Shellscripts können das Clipboard ebenfalls einsetzen, indem sie dessen Pfad
- der Shell-Variablen CLIPDIR entnehmen.
- Achtung: zu dem Clipboard-Pfad gehört nicht nur der Name des Ordners, sondern
- auch der Name der zu benutzenden Dateien (scrap.*)!
-
- Dieses Kommando benutzt keine Standard-Ein- oder Ausgabe.
-
- Siehe auch: gon
-
- -----
- cls - Bildschirm initialisieren
-
- Syntax: cls
-
- Löscht den Bildschirm, setzt den Cursor auf die erste Spalte in der
- ersten Zeile und schaltet den Cursor auf sichtbar. Außerdem wird das
- Word Wrap angeschaltet, das dafür sorgt, daß Ausgaben, die länger als
- eine Zeile sind, auf mehrere Zeilen verteilt werden.
-
- -----
- cmds - Ausgabe der internen Kommandos
-
- Syntax: cmds [-Ca] {Pattern}
-
- Es werden die Namen aller interner Kommandos ausgegeben, die auf die ange-
- gebenen Patterns passen. Dabei gelten die Regeln der erweiterten Wildcards
- (siehe okami.doc). Wenn kein Pattern angegeben ist, werden alle internen
- Kommandos ausgegeben.
-
- Flags:
- -C Die Kommandos werden in mehreren Spalten ausgegeben. Auf diese
- Weise passen alle Kommandos auf einmal auf den Bildschirm.
- -a Es werden außerdem die Startadressen der jeweiligen
- Funktionen ausgegeben (ja, für den Anwender ist das
- VÖLLIG uninteressant)
-
- Beispiele:
- cmds Ausgabe aller interner Kommandos
- cmds -a t* Ausgabe aller Komandos, die mit t beginnen, sowie
- die Startadressen.
- cmds [abcd]*e Ausgabe aller Kommandos, die mit a,b,c oder d beginnen
- und mit e aufhören.
- cmds | wc -l Ausgabe der Anzahl der internen Kommandos.
-
- Rückgabewert: Es wird die Anzahl der ausgegebenen Kommandos zurückgegeben.
-
- -----
- continue - SIEHE while
-
- -----
- cookie - Auslesen des Cookie-Jars
-
- Syntax: cookie [-xdn0sc] {cookie}
-
- Mit diesem Kommando kann der Cookie-Jar des Betriebssystems ausgelesen werden.
- Der Cookie-Jar wird erst ab TOS 1.6 vom Betriebssystem selber genutzt, kann
- aber (was die Okami-Shell tut) in allen früheren TOS-Versionen einfach in-
- stalliert werden.
- In dem Cookie-Jar können sich Programme mit einer Namenskennung und einer
- Versionsnummer eintragen. Die Kennung ist genau 4 Bytes lang, belegt also ge-
- nau wie die Versionsnummer ein Langwort (32 bit). Die Kennung der Okami-Shell
- ist "OkSh", die Versionsnummer enthält bei Version 1.3 eine 1 im oberen und
- eine 3 im unteren Byte des ersten Wortes (ist also 0x103).
-
- Es werden alle Cookies ausgegeben, die auf die angeführten Parameter passen,
- wobei dieselben Regeln wie für die erweiterten Wildcards gelten (siehe
- okami.doc). Wenn keine Parameter angegeben sind, lautet die Defaulteinstellung
- "*", es werden also alle Cookies ausgegeben.
-
- Der Rückgabewert ist die Anzahl der so gefundenen Cookies. Das Kommando kann
- dadurch benutzt werden, um das Vorhandensein eines bestimmten Cookies nachzu-
- prüfen.
-
- Flags:
- -x Die Versionsnummer wird hexadezimal ausgegeben.
- -d Die Versionsnummer wird dezimal ausgegeben.
- -n Die Versionsnummer wird in der Form x.y ausgegeben, wobei
- x das obere und y das untere Byte des ersten Wortes darstellt.
- x und y werden dabei dezimal ausgegeben.
- Dies ist die Default-Einstellung, wenn keine anderen Flags
- angegeben sind.
- -0 Es erfolgt keine Ausgabe. Ist nützlich beim Testen auf vor-
- handene Cookies, siehe untenstehendes Beispiel.
- -s Es wird außerdem eine Statistikangabe über freie und belegte
- Plätze im Cookie-Jar ausgegeben.
- -c Wenn dieses Flag angegeben ist, wird ein neuer Cookiejar ange-
- legt, in den die Shell sich einträgt. Dabei wird ein evtl.
- vorhandener Cookiejar überschrieben. Man sollte dieses Flag
- nur benutzen, wenn der Verdacht besteht, daß eine unzulässige
- Adresse als Basisadresse des Cookiejar eingetragen ist (z.B.
- von einem weggebombtem Programm, das keine Zeit mehr hatte,
- die Adresse zu entfernen).
- Dieses Flag sollte nur in Notfällen angewandt werden. Wenn
- ein früheres Programm, von dem aus die Shell gestartet wurde,
- einen Cookiejar anlegt und mit cookie -c diese Adresse ver-
- ändert wird, das Programm das aber nicht bemerkt, kann das
- zum Absturz dieses Programmes führen, wenn es versucht, den
- betreffenden Speicherbereich wieder freizugeben. (Die Okami-
- Shell ist gegen solche Vorfälle geschützt.)
-
- Es kann nur eins der Flags x, d, n angegeben werden. Wenn mehrere dieser Flags
- angegeben sind, gilt nur das zuerst stehende.
-
- Beispiele:
- cookie
- Ausgabe aller installierten Einträge.
- cookie -s [A-Z]*
- Ausgabe aller Einträge, die mit einem Groß-
- buchstaben beginnen. Außerdem wird die Sta-
- tistik ausgegeben.
- cookie -x OkSh
- Ausgabe des Okami-Cookies in hexadezimal.
- if cookie -0 MiNT
- then
- echo MiNT ist installiert.
- else
- echo MiNT ist nicht installiert.
- fi
- Findet heraus, ob Mint installiert ist. Das
- cookie-Kommando erzeugt in dieser Form keine
- Ausgabe.
-
- Rückgabewert: -2, wenn kein Cookie-Jar installiert ist (was nicht geschehen
- dürfte), -1 bei einem Syntaxfehler, sonst die Anzahl der gefundenen Cookies.
- Wenn -0 angegeben ist, wird, wenn kein Cookie-Jar installiert ist (was hin
- und wieder doch geschieht), 0 zurückgegeben.
-
- Die Basisadresse des aktuellen Cookie-Jars kann mit dem Kommando "adr" er-
- mittelt werden.
-
- -----
- cp - Dateien kopieren
-
- Syntax: cp [-acCvifq] Source {Source} Dest
-
- Wenn Dest der Name eines existierenden Ordners ist, werden alle Dateien
- Source in diesen Ordner kopiert. Der Dateiname der Kopien ist dann
- Dest/`basename Source`.
- Wenn Dest nicht der Name eines existierenden Ordners ist, wird die Datei
- Source in die Datei Dest kopiert. In diesem Fall darf nur ein Source an-
- gegeben sein.
- Die Source-Angaben dürfen erweiterte Wildcards enthalten. Die Maximalanzahl
- der auf diese Weise benutzbaren Source-Dateien ist 100. Es dürfen keine
- Ordner als Source angegeben werden.
-
- Flags:
- -a Die Quelldatei wird an die Zieldatei angehängt.
- -c Es werden nur Dateien kopiert, bei denen das Archiv-
- Bit gesetzt ist.
- -C Nach dem Kopieren wird in der Quelldatei das Archivbit
- gelöscht.
- -v Bei jeder kopierten Datei wird eine Meldung ausgegeben. Das
- ist nützlich beim Kopieren von vielen Dateien auf einmal.
- -i Fragt vor dem Überschreiben bereits vorhandener Zieldateien
- nach, ob diese überschrieben werden dürfen.
- -f Überschreibt keine bereits vorhandenen Dateien.
- -q Es erfolgen keine Ausgaben außer Syntaxfehlermeldungen und
- Informationen über fehlenden Speicherplatz (also keine
- Meldungen wegen bereits vorhandener Zieldatei, nicht ge-
- setztem Archivbit etc.)
-
-
- Beispiele:
- cp sh.ttp sh.prg Kopieren einer Datei.
- cp sh.ttp d:/shell Kopieren einer Datei in einen Ordner, erzeugt
- wird d:/shell/sh.ttp.
- cp e:/source/*.c a:/ Kopieren aller C-Dateien auf die Diskette.
- cp -f e:/source/*.c a:/ dito, aber bereits vorhandene Dateien werden
- nicht überschrieben.
- cp -a file1 file2 wesentlich schneller als `cat file1 >>file2'
- cp -cC e:/txt/* a:/ Backup aller Dateien von e:/txt nach A:
-
- -----
- crypt - Daten ver- und entschlüsseln
-
- Syntax: crypt Schlüssel
-
- crypt liest Daten von StdIn, verschlüsselt sie mit dem angegebenen Schlüssel
- und schreibt das Ergebnis nach StdOut.
- Durch erneutes Verschlüsseln werden die Daten wieder entschlüsselt.
-
- Benutzt wird der Verschlüsselungsalgorithmus von MicroEmacs, was bedeutet, daß
- die Verschlüsselung kompatibel ist zu allen MicroEmacs-Versionen auf allen
- Rechnern. Die in der Okami-Shell verwendete Verschlüsselungsroutine stammt
- aus den Quellen von MicroEmacs 3.9+.
-
- Der Verschlüsselungsalgorithmus ist so angelegt, daß druckbare Ascii-Zeichen
- wieder in solche verschlüsselt werden. Steuerzeichen (Ascii<32 oder >127)
- werden nicht verändert. Dadurch ist die Verschlüsselung einer reinen Ascii-
- Datei wieder eine reine Ascii-Datei.
-
- Eine wesentlich simplere (und weniger sichere) Verschlüsselung bietet
- das Kommando cat mit der Option -R, nämlich die rot13-Verschlüsselung.
-
- Beispiele:
- crypt xyz <secret.txt >secret.crp
- verschlüsselt die Datei secret.txt und speichert das Ergebnis
- in der Datei secret.crp. Es wird der Schlüssel "xyz" benutzt.
- crypt xyz <secret.crp
- entschlüsselt secret.crp und gibt das Ergebnis auf dem Bild-
- schirm aus.
- crypt abc <secret.txt | crypt abc
- hat dieselbe Wirkung wie "cat secret.txt".
- ls -la *.c | crypt dubidu | hd
- erzeugt eine Dateiliste, verschlüsselt sie mit dem Schlüssel
- "dubidu" und fertigt von dem Ergebnis ein Hexdump an.
- crypt abc secret.txt
- verschlüsselt die Tastatureingabe anhand des Schlüssels
- "abc secret.txt".
-
- -----
- cursor - Konfiguration des VT52-Cursors
-
- Syntax: cursor [(+|-)bv] [Rate]
-
- Beim Aufruf ohne Parameter wird die aktuelle Blinkrate nach StdOut ge-
- schrieben.
- Wenn Rate angegeben wird, wird die Blinkrate auf Rate gesetzt. Werte für
- Rate: 30 normal, <30: schneller, >30: langsamer, 0: nicht blinkend.
- Flags: +v der Cursor wird sichtbar.
- -v der Cursor wird unsichtbar.
- +b der Cursor wird blinkend.
- -b der Cursor hört auf zu blinken (unabhängig von Rate).
-
- Beispiel:
- Der Cursor soll während der Ausführung eines Programms schneller blinken
- und dann auf den alten Wert zurückgestellt werden.
-
- ALT=`cursor`
- cursor 5
- ..................... (das auszuführende Programm)
- cursor $ALT
- unset ALT
-
- Rückgabewert: der Ascii-Code des ersten eingegebenen Zeichens.
-
- Siehe auch: keyb
- mouse
- scr
-
- -----
- dark - Bildschirm dunkelschalten
-
- Syntax: dark
-
- Hat dieselbe Wirkung wie ein Druck auf Control-A in der Tastatureingabe
- (siehe okami.doc). Der Sinn dieses Kommandos ist, daß man von Programmen
- aus, die Shellaufrufe über den _shell_p-Zeiger ermöglichen, den Bildschirm
- auf Kommando dunkelschalten kann.
-
- -----
- date - Ausgabe der Systemzeit
-
- Syntax: date [+Fmt]
-
- Datum und Uhrzeit werden nach StdOut geschrieben.
- Wenn ein mit einem Pluszeichen eingeleiteter Formatstring angegeben ist,
- wird das Datum in dem angegebenen Format ausgegeben. In dem Formatstring
- können Formatelemente enthalten sein, die folgendes bedeuten:
-
- %d Nummer des Tages im Monat (00...31)
- %h Abkürzung des Monatsnamens (Jan...Dec)
- %H Stunde (00...23)
- %m Nummer des Monats (00...12)
- %M Minute (00.59)
- %n erzeugt einen Zeilenvorschub
- %S Sekunde (00...59)
- %t erzeugt einen Tabulatorvorschub
- %y Jahr zweistellig (00...99)
- %Y Jahr vierstellig (1900...????)
- %% erzeugt ein Prozentzeichen
-
- Alle anderen Zeichen werden direkt ausgegeben.
-
- Wenn kein Formatstring angegeben ist, lautet die Voreinstellung:
- date +%d.%m.%Y %H:%M:%S
-
- Beispiele:
- Eingabe... Ausgabe... (z.B.)
- date 06.09.1990 21:38:07
- date +Das Jahr ist %Y Das Jahr ist 1990
- date +%h. %dth, %Y Sep. 06th, 1990
- date +Hallo, wie gehts Hallo, wie gehts
-
- -----
- dial - Telefonnummern über das Modem wählen
-
- Syntax: dial [-q|-f [Dateiname]|{Nummer|Kürzel|-d}]
-
- Dieses Kommando ist für Besitzer von Modems interessant, an denen ein Telefon
- angeschlossen werden kann. Man kann Telefonnummern vom Rechner aus über das
- Modem wählen lassen und dann normal telefonieren. Das dial-Kommando erweitert
- das vorhandene Telefon um Rufnummernverzeichnis, Tastatur, Display und
- Wahlwiederholung.
-
- Wenn kein Parameter angegeben ist, wird die beim letzten Aufruf angegebene
- Nummer noch einmal gewählt.
-
- Wenn der Parameter -q angegeben ist, wird die beim letzten Aufruf angegebene
- Nummer ausgegeben.
-
- Wenn der Parameter -f, gefolgt von einem Dateinamen, angegeben ist, wird die
- angegebene Datei als Rufnummerndatei geladen. Wenn -f ohne Dateinamen ange-
- geben ist, wird eine evtl. residente Rufnummerndatei aus dem Speicher ent-
- fernt.
-
- Achtung: wenn eins der Flags -f oder -q benutzt wird, so dürfen keine anderen
- Flags oder Parameter benutzt werden.
-
- Alle anderen Parameter werden als Nummern oder Kürzel betrachtet. Als Nummer
- gilt alles, was mit einer Ziffer beginnt, als Kürzel gilt alles andere. Ein
- Underscore als Kürzel steht für die beim letzten Aufruf angegebene Nummer.
- Wenn dabei das Flag -d angegeben ist, wird die Nummer nur ausgegeben und
- nicht gewählt.
-
- Die Kürzel werden anhand einer Rufnummerndatei interpretiert. Diese Datei wird
- bei ihrer ersten Benutzung in den Speicher geladen und resident gehalten, bis
- mit -f eine andere Datei gewählt oder die Shell beendet wird. Der Default-
- Dateiname ist $ETC/dial.inf .
-
- Die einzelnen Zeilen der Rufnummerndatei enthalten jeweils ein Kürzel und eine
- Nummer. Kürzel und Nummer müssen durch mindestens ein Whitespace-Zeichen
- (Space, Tab...) getrennt sein. Groß/Kleinschreibung ist ohne Bedeutung. Alle
- nicht-Ziffern in der Nummer werden ignoriert. Zeilen, die mit einem Doppel-
- kreuz beginnen, sowie Leerzeilen gelten als Kommentarzeilen. Whitespace-
- Zeichen am Anfang und Ende der Zeilen werden ebenfalls ignoriert.
-
- Die Nummer wird gewählt, indem folgende Zeichenketten nacheinander an die
- serielle Schnittstelle geschickt werden:
-
- 1) der Inhalt der Shellvariablen DIALPREFIX oder, wenn diese
- Variable nicht gesetzt ist, die Zeichenkette "ATD",
- 2) alle Ziffern der gewählten Nummer,
- 3) ein CR-Zeichen.
-
- Der Anwender hat selber dafür zu sorgen, daß an der Schnittstelle ein Modem
- angeschlossen ist und daß die Schnittstelle korrekt initialisiert und
- konfiguriert ist.
-
- Wenn bei der Expansion der Kürzel ein Fehler auftritt, weil die Rufnummern-
- datei nicht geöffnet werden kann oder ein unbekanntes Kürzel auftritt, wird
- das Kommando nicht abgebrochen, sondern es wird das fehlerhafte Kürzel ig-
- noriert.
-
- Beispiele:
-
- Auszug aus einer Rufnummerndatei:
-
- # Vorwahlen
- Aachen 0241
- Köln 0221
- München 089
- # Nummern
- W.Rösler 534596
- Zeit 1191
-
- dial 534596
- die angegebene Nummer wird gewählt.
- dial 0241 _
- die letzte Nummer wird mit einer Vorwahl versehen.
- Anstelle des Underscores tritt die zuletzt gewählte
- Nummer.
- dial 0241 534596
- mit Vorwahl.
- dial 0241534596
- hat dieselbe Wirkung.
- dial 0241-53.45.96
- ebenso. Nicht-Ziffern werden ignoriert.
- dial Aachen 123456
- die Vorwahl von Aachen wird aus der Rufnummerndatei
- geholt.
- dial Aachen W.Rösler
- Vorwahl und Nummer werden aus der Datei geholt.
- dial aachen w.rösler
- ebenso. Groß/Kleinschreibung ist ohne Bedeutung.
- dial -d Köln 121.345.4-5
- die Nummer wird zusammengebaut und ausgegeben, aber
- nicht gewählt (-d).
- dial -f mydial
- die Datei mydial wird als Rufnummerndatei geladen. Es
- wird nichts gewählt.
- dial -f
- eine evtl. residente Rufnummerndatei wird aus dem
- Speicher entfernt.
- DIALPREFIX=ATDT
- Einstellen eines anderen Präfixes für die zum Modem
- zu schickende Steuersequenz.
- dial
- die letzte Nummer wird noch einmal gewählt.
- dial -q
- die letzte Nummer wird ausgegeben. Es wird nichts
- gewählt.
-
- Siehe auch: rsconf
-
- -----
- df - Belegung der Massespeicher anzeigen
-
- Syntax: df [-dnmbf] {Drive}
-
- Gibt Informationen über freie und belegte Bytes und Cluster auf allen
- angemeldeten Laufwerken oder, wenn Drive angegeben ist, nur von Laufwerk
- Drive. Nur der erste Buchstabe von Drive ist relevant, d.h. für Informa-
- tionen über Laufwerk A: genügt: df a
-
- Flag: -d Es werden für jedes Laufwerk folgende Daten ausgegeben:
- Anzahl der Cluster,
- Anzahl der Sektoren pro Cluster,
- Anzahl der Bytes pro Sektor,
- Anzahl der freien Cluster.
- Dies entspricht der Rückgabe der Gemdos-Funktion Dfree.
- -n Es wird keine Überschrift ausgegeben. Wenn -n zusammen
- mit -m angegeben wird, werden die mit `rdti' oder `drives'
- eingestellten Laufwerksbezeichnungen nicht ausgegeben.
- -m Es wird eine Liste der angeschlossenen Laufwerke ausge-
- geben. -d ist ohne Wirkung. Es werden die mit `rdti'
- oder `drives' eingestellten Laufwerksbezeichnungen aus-
- gegeben, außer wenn -n angegeben ist.
- -b Wenn nur ein Laufwerk angeschlossen ist, das sowohl als
- A: als auch als B: angesprochen werden kann, werden, wenn
- dieses Flag angegeben ist, bei der Übersicht (auch bei -m)
- die Angaben von A: und von B: ausgegeben (wenn -m nicht
- angegeben ist, ist also ein Diskettenwechsel nötig). Wenn
- -b nicht angegeben ist, werden, wenn nur ein Disketten-
- laufwerk vorhanden ist, keine Angaben über Laufwerk B:
- ausgegeben (auch nicht bei -m).
- -f Es wird nur die Anzahl der freien Bytes nach StdOut ge-
- schrieben. Mit dieser Option kann z.B. ein Shellscript
- feststellen, ob auf einer Diskette genügend Platz vorhanden
- ist.
-
- Rückgabewert: (nur für df -m)
- -1 Aufruffehler.
- sonst Anzahl der ausgegebenen Laufwerke.
-
- Siehe auch: du
-
- -----
- dirname - Pfad ermitteln
-
- Syntax: dirname file
-
- Es wird der Pfad der Datei ausgegeben.
- Bsp: dirname a:\okami\sh.ttp ergibt a:\okami.
-
- Siehe auch: basename
- drvname
- extname
- fullname
-
- -----
- do - SIEHE while
-
- -----
- done - SIEHE while
-
- -----
- drive - Laufwerksbezeichnungen festlegen und auslesen
-
- Syntax: drive ["Drive {Drive}" [String]]
-
- Mit diesem Kommando kann jedem Laufwerk eine Bezeichnung zugeordnet werden.
- Diese Bezeichnung wird z.B. von dem internen Kommando df ausgegeben.
- Wenn keine Parameter angegeben sind, werden alle vorhandenen Bezeichnungen
- ausgegeben.
- Wenn nur ein Parameter (d.h. ein einziges Wort, ggfs. in doppelten Anführungs-
- zeichen) angegeben ist, so wird jeder Buchstabe dieses Wortes als Laufwerk be-
- trachtet und die Bezeichnung dieses Laufwerks ausgegeben. Zeichen außer A bis
- Z und a bis z werden dabei ignoriert.
- Wenn ein String ausgegeben ist, wird dieser jedem der angegebenen Lauf-
- werke als Laufwerksbezeichnung zugeordnet.
-
- Beispiele:
- 1) Ausgabe aller Laufwerksbezeichnungen:
- drive
-
- 2) Ausgabe der Bezeichnung von Laufwerk A:
- drive A:
- oder
- drive a
-
- 3) Ausgabe der Bezeichnungen der Laufwerke A,C und G:
- drive acg
- oder
- drive "A: C: G:"
-
- 4) Setzen der Bezeichnung "Diskette" für Laufwerk A:
- drive a Diskette
-
- 5) Setzen der Bezeichnung "Platte" für Laufwerke C bis F:
- drive cdef Platte
- oder
- drive "C D E F" Platte
- aber nicht
- drive C D E F Platte
-
- Eine weitere Möglichkeit, die Laufwerksbezeichnungen zu initialisieren,
- ist das interne Kommando rdti, das die Bezeichnungen direkt aus der
- desktop.inf-Datei lädt.
-
- -----
- drvname - Laufwerk ermitteln
-
- Syntax: drvname file
-
- Es wird der Name des Gerätes von file ausgegeben.
- Bsp: drvname a:\okami\sh.ttp ergibt a:.
-
- Siehe auch: basename
- dirname
- extname
- fullname
-
- -----
- du - Platten-Platzbedarf ermitteln
-
- Syntax: du [-brft] {Directory}
-
- du ermittelt zu jedem der angegebenen Directories den Bedarf an Platten-
- speicherplatz. Das ist die Summe aus den Längen aller in den Directories
- enthaltenen Dateien plus der Platzbedarf aller enthaltenen Subdirectories.
- Außerdem dient du zur baumartigen Darstellung der Ordnerhierarchie.
- Die Ausgabe von du erfolgt in Clustern. Ein Cluster entspricht i.d.R.
- einem Kilobyte auf der Platte, die tatsächliche Größe wird aus dem Bios-
- Parameterblock ermittelt. Der Platzbedarf einer Datei entspricht der Anzahl
- der benötigten Cluster, ist also i.d.R. größer als die Dateilänge.
- Wenn keine Parameter angegeben sind, lautet die Defaulteinstellung "-r .".
- Wenn kein Directory angegeben ist, wird das aktuelle Directory benutzt.
-
- Flags:
- -b Es wird nicht der Platzbedarf in Clustern, sondern die
- Dateilänge in Bytes errechnet und ausgegeben.
- -r Es wird nur der Platzbedarf der angegebenen Directories
- ausgegeben. Wenn dieses Flag nicht angegeben ist, wird auch
- der Platzbedarf aller enthaltenen Subdirectories ausgegeben.
- -f Es wird zusätzlich der Platzbedarf aller enthaltenen Dateien
- ausgegeben. Wenn dieses Flag nicht angegeben ist, wird nur
- der Platzbedarf von Directories ausgegeben.
- Wenn -t angegeben ist, hat dieses Flag die umgekehrte Wirkung:
- es werden dann keine Dateien, sondern nur Directories ausge-
- geben. Dies ist nützlich für einen schnellen Überblick über
- die Ordnerstruktur.
- -t erzeugt eine baumartige Ausgabe der Ordnerstruktur. Die Flags
- -b und -r sind ohne Wirkung.
-
- Beispiele:
-
- du /okami ergibt: (Angaben in Cluster)
- 1 bin
- 615 doc
- 74 ok_demo\doc
- 125 ok_demo
- 2000 \okami
-
- du -b /okami ergibt: (Angaben in Bytes)
- 292 bin
- 617210 doc
- 73148 ok_demo\doc
- 121683 ok_demo
- 1978543 \okami
-
- du -r /okami ergibt: (nur das angegebene Directory)
- 2000 e:\okami
-
- du -f /okami ergibt: (Ausgabe mit allen Dateien) (Ausschnitt)
- 36 cmds2.c
- 27 utl4.c
- 48 sh.c
- 1 bin\ship.exe
- 1 bin
- 2000 \okami
-
- du -t /okami ergibt: (Ausgabe als Baum mit Dateien) (Ausschnitt)
- okami\
- cmds2.c
- utl4.c
- sh.c
- bin\
- ship.exe
- du -tf /okami ergibt: (dito ohne Dateien)
- okami\
- bin\
- doc\
- ok_demo\
- doc\
-
- Siehe auch: df
-
- -----
- echo - Zeichenketten ausgeben
-
- Syntax: echo String
-
- Schreibt String nach StdOut. String kann leer sein, d.h. echo ohne Para-
- meter schreibt eine Leerzeile nach StdOut.
- In dem String sind folgende Sonderzeichen erlaubt:
- ^n erzeugt ein Newline-Zeichen (in C: '\n')
- ^t erzeugt ein Tabulator-Zeichen (in C: '\t')
- ^ooo wobei ooo eine dreistellige Oktalzahl ist: erzeugt das Zeichen
- mit dem Ascii-Code ooo.
- Beipiel: echo ^033pHallo^033q schreibt Hallo in invertierter Schrift.
- ^; erzeugt ein Semikolon, das nicht als Trenner von Kommandos wirkt.
- Siehe unten.
- ^>
- ^<
- ^|
- ^` erzeugen analog dazu Größer-, Kleiner-, Pipe- und Accent Grave-Zei-
- chen, die nicht die Ein/Ausgabeumleitung bzw. Command Substitution
- bewirken.
- ^c am Ende des Strings verhindert den Zeilenvorschub, d.h. der Cursor
- bleibt am Ende der Zeile.
- ^x wobei x ein beliebiges Zeichen ausser n, t, c, 0..7 ist: erzeugt
- das Zeichen x. Dies ist nuetzlich zum Beenden von Variablenauf-
- rufen. Beispiel:
-
- VAR=Halli
- echo $VARHallo gibt den Wert der Variable VARHallo aus
- echo $VAR^Hallo gibt die Ausgabe HalliHallo.
-
- ^^ erzeugt ein Hoch-Zeichen.
-
- Achtung: Whitespace-Zeichen wie ^t und ^n müssen in doppelten Anführungs-
- zeichen (") stehen, um wirksam zu werden.
-
- Diese Sonderzeichen gelten nicht nur bei der Angabe von Parametern des echo-
- Kommandos, sondern für alle Kommandos.
-
- Das Hoch-Zeichen hat also die Funktion, die im herkoemmlichen UNIX-"echo"
- der Backslash hat. Unter TOS wird der Backslash allerdings (in MS-DOS-
- Konvention) als Trennzeichen zwischen Pfad(en) und Dateinamen benutzt
- (wofür es in UNIX den normalen Slash gibt). Daher wird in der Okami-Shell
- der Backslash durch das Hoch-Zeichen ersetzt. Deswegen muß man in der
- Okami-Shell darauf verzichten, das Hoch-Zeichen anstelle des Pipe-Symbols
- (|) zu benutzen, was in Unix teilweise üblich ist.
- (Fazit: Es ist nicht leicht, MS-DOS und Unix unter einen Hut zu bringen,
- und TOS ist eine unmögliche Mischung von beidem)
-
- Beispiele:
-
- 1) Ausgabe des aktuellen Directories:
- echo Das aktuelle Directory ist $CWD
-
- 2) Ausgabe von VT52-Sequenzen:
- echo ^033e schaltet den Cursor ab
- echo ^033H setzt den Cursor auf Home-Position etc.
-
- 3) Ausgabe eines Semikolons:
- echo Hallo ; ls -l schreibt "Hallo" und führt das Kommando
- "ls -l" aus.
- echo Hallo ^; ls -l schreibt "Hallo ; ls -l".
-
- 4) Benutzung der Sonderzeichen in anderen Shellkommandos: Einstellen eines
- Shellprompts, das aus dem String "Eingabe: >" in invertierter Schrift
- besteht; vor jedem Prompt soll ein Signalton erzeugt werden.
- PS1="^007^033pEingabe: ^>^033q"
-
- -----
- egrep - SIEHE grep
-
- -----
- else - SIEHE if
-
- -----
- env - Ausgabe des Environments der Shell
-
- Syntax: env
-
- Die der Shell übergebenen Environment-Strings werden nach StdOut ausgegeben.
- Nach jedem String wird ein Newline-Zeichen eingefügt.
- Dieses Kommando arbeitet ausschließlich auf dem der Shell übergebenen
- Environment, was bedeutet, daß nach dem Start der Shell exportierte Shell-
- variablen nicht mit ausgegeben werden. Um alle exportierten Shellvariablen
- auszugeben, gibt es das Kommando `vars -ex'.
-
- Siehe auch: export
- vars
-
- -----
- errcode - Analyse von Fehlernummern
-
- Syntax: errcode {Fehlernummer|errno}
-
- errcode liefert zu einer Bios-, XBios- oder Gemdos-Fehlernummer einen er-
- klärenden Text. Als Fehlernummer kan jede beliebige Zahl oder das Wort
- "errno" angegeben sein, in letzterem Fall wird der Wert der internen Fehler-
- variablen errno benutzt. Fehlernummern können positiv oder negativ angegeben
- werden; da das Betriebssystem nur negative Fehlernummern benutzt, werden posi-
- tive Nummern negiert. Die Ausgabe hat die Form
- Nummer: Text
- Die Nummer wird dezimal ausgegeben und entspricht dem jeweiligen Parameter
- oder dem Inhalt von errno. Der Text ist eine Kurzdefinition der Nummer. Bei
- einer unbekannten Nummer lautet der Text "???".
- Die Voreinstellung, wenn keine Parameter angegeben sind, lautet "errno".
-
- -----
- exec - Eine Datei als Binärprogramm ausführen
-
- Syntax: exec [-(l|b)g] Dateiname {Parameter}
- oder exec -x Basepage-Adresse {Parameter}
-
- Dient zum Laden oder Starten einer Datei als Binär-Programmdatei. Entspricht
- der Gemdos-Funktion "Pexec".
- Es muß der vollständige Dateiname (relativ oder absolut) angegeben werden.
- Die Shellvariablen PATH und XEXT sind ohne Wirkung. Die Shellvariable GEXT
- entscheidet, ob das Programm als GEM-Programm starten soll. Wenn das Flag -g
- angegeben ist, wird das Programm nicht über die Shellfunktion gemexec ausge-
- führt, auch wenn der Extender in $GEXT aufgeführt ist. Dies ist die Art und
- Weise, mit der gemexec Programme ausführt.
- Wenn das Flag -x angegeben ist, werden Programme, die zuvor mit -l geladen
- wurden, gestartet. Dazu muß die von -l ermittelte Basepage-Adresse über-
- geben werden.
-
- Achtung: Wenn Flags angegeben sind, so müssen sie zu Beginn, also vor dem
- Dateinamen stehen und dürfen nicht durch Leerzeichen getrennt sein.
-
- Beispiele:
- 1) exec datei.ttp p1 p2 p3
- lädt und startet die Datei datei.ttp im aktuellen Verzeich-
- nis. Der String "p1 p2 p3" wird als Parameterzeile über-
- geben.
- 2) exec datei.prg
- Wenn der Extender .prg in der Shell-Variablen GEXT gespeichert
- ist, wird die Datei datei.prg über die Shellfunktion gemexec
- ausgeführt, ansonsten wird sie geladen und gestartet.
- 3) exec -g datei.prg
- Die Datei datei.prg wird geladen und gestartet, auch wenn der
- Extender .prg in GEXT gespeichert ist. Die Funktion gemexec
- wird also nicht aufgerufen.
- 4) exec datei.prg -g
- wie 2), aber es wird die Zeichenkette "-g" an das Programm
- übergeben.
- 5) exec -l datei.ttp
- Die Datei wird geladen. Die Startadresse der Basepage des
- Programms wird in hexadezimaler Schreibweise auf den Bild-
- schirm geschrieben. Die Adresse der Basepage kann mit
- exec -x oder dem Kommando basep weiterverarbeitet werden.
- Das Angeben von Parametern ist möglich, aber nicht sinnvoll,
- da diese beim Start des Programms mit exec -x überschrieben
- werden.
- 6) exec -b datei.ttp p1 p2 p3
- wie 2), aber es wird die Basepage des Programms erzeugt.
- 7) exec -x 0x65abc file.c
- Die zuvor mit exec -l geladene Datei datei.ttp wird ge-
- startet. Die Zeichenkette `file.c' wird als Parameter
- übergeben. exec -l sollte die Ausgabe "0x65ABC" erzeugt haben.
-
- VORSICHT: Wenn bei der Verwendung von exec -x eine falsche Adresse angege-
- ben wird, ist ein Absturz der Shell möglich. Es sollte nur eine Adresse
- verwendet werden, die zuvor mit exec -l ermittelt wurde.
-
- Siehe auch: basep
- gemexec
-
- -----
- Exit - siehe exit
-
- -----
- exit , Exit - Beenden der Shell oder eines Shellscripts
-
- Syntax: exit|Exit
-
- Im Dialogmodus beenden beide Kommandos die Shell. Hat dieselbe Wirkung wie
- ein Druck auf Ctrl-D in der Kommandoeingabe.
- Nach einem exit wird folgendes getan:
- 1) ein evtl. mit trap definiertes Kommando wird ausgeführt.
- 2) wenn gon eingegeben worden ist, aber noch kein goff, wird goff aufgeru-
- fen.
- 3) die Speicherbereiche der Shell-Variablen werden freigegeben.
- 4) die Speicherbereiche der Tastatur-History werden freigegeben.
- 5) der für getscr/putscr reservierte Speicherbereich wird freigegeben.
- 6) ein evtl. residentes Helpfile wird freigegeben.
- 7) die Speicherbereiche der Shellfunktionen werden freigegeben.
- 8) die Speicherbereiche der Laufwerksbezeichnungen werden freigegeben.
- 9) die Speicherbereiche der Tastendefinitionen werden freigegeben.
- 10) wenn das Shellflag s gesetzt ist, wird das aktuelle Verzeichnis in die
- Datei $HOME\wdir gespeichert und diese Datei unsichtbar gemacht.
- 11) die DTA wird auf den Zustand vor dem Start der Shell zurückgestellt.
- 12) der Eintrag im Cookiejar wird entfernt und ggfs. der Speicherbereich des
- Cookiejars freigegeben.
- 13) alle evtl. noch offenen Umleitungsdateien werden geschlossen.
- 14) der Speicherbereich der Environment-Stringpointer wird freigegeben.
- 15) das Programm wird beendet.
-
- Wenn dieses Kommando exit in einem Shellscript steht, wird nur das Shellscript
- beendet. Es wird keine der oben angeführten Aktionen durchgeführt.
- Wenn das Kommando Exit in einem Shellscript steht, wird die Shell wie
- oben beschrieben beendet.
-
- Beispiele:
-
- 1. Beenden eines Shellscripts unter einer bestimmten Bedingung. Die Shell,
- die dieses Script ausführt, läuft weiter.
-
- echo Dateiname?
- read FILE
- if [ -f $FILE ]
- then
- echo $FILE existiert nicht!
- exit
- end
-
- 2. Beenden der Shell aus einem Shellscript heraus. Wenn der Benutzer das
- falsche Passwort eingibt, wird die Shell beendet, man landet also
- wieder im Desktop.
-
- echo Passwort?
- read PASSWD
- if [ $PASSWD != $SECRET ]
- then
- echo Falsches Passwort!
- Exit
- fi
-
- -----
- export - Shell-Variablen für das Environment markieren
-
- Syntax: export [[-] {Variable}]
-
- Alle als exportiert markierten Shellvariablen werden beim Start eines
- Binärprogrammes als Environment in die Basepage des neuen Programmes ein-
- getragen. Dadurch ist es möglich, eine Umgebung zu schaffen, die beim
- Start weiterer Programme erhalten bleibt.
- Beim Aufruf ohne Parameter wird eine Liste aller exportierter Variablen
- ausgegeben.
- Beim Aufruf mit den Namen von mindestens einer Shellvariablen werden alle
- angegebenen Variablen als exportiert markiert. Wenn Variablen angegeben
- werden, die noch nicht existieren, so werden diese mit einem leeren Wert
- angelegt und exportiert.
- Die Namen der Variablen können dabei im Format der erweiterten Wildcards
- angegeben werden, z.B. "export a*" exportiert alle Variablen, deren Name
- mit a beginnt. Näheres siehe okami.doc.
-
- Flag: - Bei den angegebenen Variablen wird die Exporiert-Markierung
- gelöscht. Damit können Variablen aus dem Environment ent-
- fernt werden.
-
- Beispiel:
- PS1="Eingabe:" Ändern des Shell-Prompts
- export PS1 Übernahme von PS1 ins Environment
- sh Wieder-Aufruf der Shell (Subshell)
- echo PS1 Es erscheint "Eingabe:", da die
- Variable PS1 aus dem Environment
- eingestellt wurde.
- exit Beenden der aufgerufenen Subshell.
- export - PS1 Entfernen von PS1 aus dem Environm.
-
- Siehe auch: env
- readonly
- vars
- Zum Format des Environments siehe okami.doc.
-
- -----
- extname - Dateinamen-Extender ermitteln
-
- Syntax: extname filename
-
- Der Extender des angegebenen Filenamen wird nach StdOut geschrieben (incl.
- dem Punkt vor dem Extender). Wenn der Dateiname keinen Extender hat, wird
- nur ein Zeilenvorschub ausgegeben.
- Dies ist eine reine Stringfunktion, das Ergebnis ist unabhängig von der
- Einstellung des Shell-Flags l (siehe set) und davon, ob die angegebene Datei
- existiert oder nicht.
-
- Beispiele:
- extname d:/shell/sh.ttp erzeugt die Ausgabe ".ttp".
- extname profile erzeugt einen Zeilenvorschub.
- EXT=`extname hallo.txt` einlesen in eine Variable.
-
- Siehe auch: basename
- dirname
- drvname
- fullname
-
- -----
- false - Rückgabe von 0
-
- Syntax: false
-
- Dieses Kommando gibt immer eine 0 zurück. Es wird normalerweise mit while
- oder if verwendet.
-
- Beispiel: Ausblenden eines Teiles eines Shellscripts. Durch "true" anstelle
- von "false" kann der Teil wieder aktiviert werden.
-
- if false
- then
- ............. (irgendwelche Kommandos)
- fi
-
- Siehe: if
- while
- true
-
- -----
- fcts - Shellfunktionen auflisten
-
- Syntax: fcts [-l]
-
- Es wird eine Liste aller Shellfunktionen ausgegeben. Zu jeder Funktion er-
- scheint eine Zeile der Form:
-
- 365 hallo()
-
- Die Zahl ist die Größe der Funktion in Bytes.
- Nach der Liste wird eine Statistik ausgegeben, die folgende Angaben umfaßt:
- Summe der Größen aller Funktionen,
- Anzahl der Funktionen,
- Maximalanzahl der zu definierenden Funktionen,
- prozentuelle Belegung der Funktionstabelle.
-
- Wenn das Flag -l angegeben ist, werden stattdessen die Definitionen aller
- Shellfunktionen ausgegeben, und zwar in einem Format, das später zur Ins-
- tallation der Shellfunktionen benutzt werden kann.
-
- Beispiel:
-
- trap +fcts -l ^>$ETC/fcts.sh
-
- schreibt bei Ende der Shell die Definitionen aller Funktionen in die Datei
- $ETC/fcts.sh . Mit der folgenden Zeile im Profile:
-
- . $ETC/fcts.sh
-
- werden die Funktionen dann wieder geladen und so auf die alten Werte einge-
- stellt.
-
- -----
- fgrep - SIEHE grep
-
- -----
- fi - SIEHE if
-
- -----
- find - Dateien suchen
-
- Syntax: find Startdirectory Suchmaske
-
- Findet alle Dateien ab dem angegebenen Startdirectory, die auf die ange-
- gebene Suchmaske passen. Es wird rekursiv in allen Ordnern gesucht.
-
- Beispiel:
- 1) Ausgabe aller Shellscripts, die unter dem Home-Directory liegen:
- find $HOME *.sh
-
- 2) Listen aller Dateien, die auf einer Festplattenpartition liegen:
- find c:\ *
-
- 3) Listen aller C-Quelldateien ab dem aktuellen Directory:
- find . *.c
-
-
- Die Verwendung dieses Kommandos ist nützlich mit Kommandos, die von ihrer
- Eingabe Dateinamen einlesen (z.B. backup). In Verbindung mit xargs können
- auch andere Kommandos für die entsprechenden Dateien aufgerufen werden.
-
- -----
- fsel - eine Datei mit der Fileselect-Box auswählen
-
- Syntax: fsel [Pfad [Default [Variable [Label]]]]
-
- Es wird die AES-Fileselect-Box aufgerufen, um eine Datei auszuwählen,
- deren Name nach StdOut geschrieben wird. Damit dieser Aufruf funktioniert,
- muß die Shell als GEM-Applikation angemeldet werden. Dies geschieht mit
- dem Kommando gon, das vor fsel aufgerufen werden muß.
-
- In Pfad kann der Suchpfad und das Suchmuster der darzustellenden Dateien
- angegeben werden. In Default kann der als ausgewählt voreinzustellende
- Dateiname angegeben werden. Label ist die Überschrift für die Fileselect-
- Box. Die Angabe einer Überschrift ist erst ab TOS 1.4 möglich, bei älteren
- TOS-Versionen ist dieser Parameter ohne Wirkung. Wenn Label Leerzeichen
- enthält, muß es in Anführungszeichen eingeschlossen sein.
- Achtung: da die Pfadangabe nicht von der Shell, sondern vom AES ausge-
- wertet wird, dürfen hier nur Gemdos-Wildcards benutzt werden.
- Wenn Pfad, Default oder Label nicht angegeben sind lautet die Voreinstellung:
-
- Pfad = ".\*.*" (alle Dateien im aktuellen Directory)
- Default = "" (keine Voreinstellung)
- Label = "Okami Shell"
-
- Wenn der Anwender die Abbruch-Taste der Fileselect-Box anwählt, gibt fsel
- eine 0 zurück, ansonsten eine 1. Dieser Rückgabewert kann in der Shell-
- variablen "?" abgefragt werden.
- Wenn als dritter Parameter eine Variable angegeben ist, wird der Rück-
- gabewert (0 bei Abbruch, 1 sonst) auch in dieser Variablen abgelegt.
- Wenn dieser Parameter, nicht aber der zweite benutzt wird (weil keine Vor-
- einstellung gewünscht ist), muß der zweite Parameter . (Punkt) oder ""
- (zwei doppelte Anführungszeichen) lauten.
-
- Beispiele:
- gon muß immer zuerst kommen
- fsel Auswahl aus allen Dateien im aktuellen Dir.
- fsel *.c Auswahl aus allen C-Dateien
- fsel e:\shell\*.c Auswahl aus den C-Dateien in e:\shell
- A=`fsel *.c` Einlesen in eine Variable
- echo $? Ausgabe von 0, falls Abbruch, 1 sonst
- fsel *.c sh.c VAR
- echo $VAR Ergebnis in eine Variable speichern
- fsel *.c sh.c VAR "Bitte eine Datei auswählen"
- Benutzung der Überschrift
-
- Da die Fileselect-Box den von ihr benutzten Bildschirmbereich nicht wieder
- restauriert, speichert fsel den gesamten Bildschirm vor dem Aufruf der
- Fileselect-Box ab. Daher müssen beim Aufruf von fsel mindestens 32000
- Bytes an freiem Speicher verfügbar sein.
-
- Rückgabewert:
- 1 Abbruch angewählt.
- 0 Ok angewählt.
-
- -----
- fullname - Absoluten Dateinamen ermitteln
-
- Syntax: fullname file
-
- Ermittelt den vollen, absoluten Dateinamen der angegebenen Datei. Der abso-
- lute Dateiname ist von dem Format
- Laufwerk ":\" Pfad "\" Dateiname
- z.B. "d:\shell\sh.ttp". Es ist ohne Bedeutung, ob eine Datei mit dem ange-
- gebenen Namen existiert.
-
- Beispiele: Es sei D: das aktuelle Laufwerk, d:\shell das aktuelle Directory
- von Laufwerk D: und c:\compiler\cc das aktuelle Laufwerk von Laufwerk C:.
-
- fullname von... ergibt...
-
- c:\files\hallo.txt c:\files\hallo.txt
- c:test.c c:\compiler\cc\test.c
- sh.ttp d:\shell\sh.ttp
- \sh.ttp d:\sh.ttp
- bin\ship.exe d:\shell\bin\ship.exe
-
- Siehe auch: basename
- dirname
- drvname
- extname
-
- -----
- gemexec - Shellfunktion zum Starten von GEM-Programmen
-
- Syntax: Programmname {Parameter}
-
- Bei gemexec handelt es sich um eine Shellfunktion, die nicht direkt vom Be-
- nutzer, sondern von der Shell selber aufgerufen wird. Der Sinn der Sache ist,
- manche Programme, insbesondere GEM-Programme, unter besonderen Bedingungen
- aufzurufen. Wenn ein GEM-Programm aufgerufen wird, soll z.B. vorher der Bild-
- schirm gelöscht, der Cursor ab- und die Maus eingeschaltet werden, und nach
- dem Ende des Programms soll der Bildschirm wieder gelöscht werden. Um diese
- Prozedur möglichst flexibel und vom Anwender konfigurierbar zu gestalten, wer-
- den GEM-Programme (das sind per Definition alle externen Kommandos, deren
- Extender in der Shellvariablen GEXT gespeichert sind) über die Shellfunktion
- gemexec ausgeführt. Diese Funktion kann alle weiteren Aktionen durchführen und
- ist auch dafür verantwortlich, daß das Programm überhaupt gestartet wird.
-
- Nach dem Start der Shell wird die Funktion folgendermaßen initialisiert:
-
- gemexec()
- {
- _=$0 $*
- cursor -v;scr -g
- exec -g $_
- cls
- _=
- }
-
- Beim Aufruf der Funktion gemexec enthält die Shellvariable $0 nicht den Namen
- der Funktion, sondern den vollständigen Pfadnamen des aufzurufenden Programms.
- Die Shellvariable $* enthält die zu übergebenen Parameter. Die Funktion kann
- kann vom Anwender beliebig verändert werden, aber um das betreffende Programm
- ordnungsgemäß aufzurufen, sollte sie zumindest folgendes tun:
-
- 1) Speichern von $0 und $* in einer Shellvariablen, hier: _
- 2) Durchführung aller Aktionen vor Programmstart, hier: cls und
- cursor -v (Bildschirm löschen und Cursor abschalten).
- 3) Aufruf des Programms mit dem Kommando "exec -g $_"
- Anstelle von $_ kann die in 1) benutzte Variable, aber
- auch andere Werte stehen.
- ACHTUNG: Beim Aufruf von exec muß UNBEDINGT das Flag -g angegeben
- werden!!!!! Ansonsten wird exec die Funktion gemexec nochmal mit
- denselben Parametern aufrufen => infinite Rekursion.
- 4) Die Freigabe der Variablen (hier: _) ist nicht unbedingt notwendig,
- da sie immer wieder verwendet wird.
-
- Die Funktion gemexec kann wie jede Shellfunktion programmiert werden, was be-
- deutet, daß sie auch Kontrollstrukturen wie if und while beinhalten kann. Sie
- kann den in $0 übergebenen Programmnamen mit basename und extname analysieren
- und entsprechende Operationen durchführen. Sie muß nicht unbedingt das Pro-
- gramm, daß in $0 übergeben wird, ausführen; dadurch ist es möglich, etwas
- völlig anderes als ein Programm auf diese Weise aufzurufen.
-
- In der Datei tricks.doc befindet sich eine gemexec-Funktion, die nach dem
- Ende eines GEM Programms den Bildschirm wieder so herstellt, wie er vor dem
- Aufruf war, sowie eine, die das "Anwendung anmelden" des Desktop simuliert.
-
- Siehe auch: exec
- den Abschnitt über gemexec in tricks.doc
-
- -----
- getscr - Bildschirminhalt laden und sichern
-
- Syntax: getscr [-[Header] Dateiname]
-
- Der Bildschirminhalt wird in einem internen Speicherbereich gesichert. Er
- kann mit dem Kommando putscr wiederhergestellt werden.
- Wenn das Flag - angegeben ist, wird der Bildschirminhalt aus der angegebenen
- Datei gelesen. Dazu kann die Länge eines Headers angegeben werden, der über-
- lesen wird. Wenn kein Header angegeben wird, wird kein Header überlesen.
-
- Durch nochmaligen Aufruf von getscr wird der zuvor gespeicherte Bildschirm
- überschrieben.
-
- Beispiel:
- getscr
- Sichern des aktuellen Bildschirminhaltes
- getscr - <picture.doo
- Laden eines Doodle-Bildes (32000 Bytes)
- getscr -34 <picture.pi3
- Laden eines Degas-PI3-Bildes (32066 Bytes)
-
- Siehe: putscr
- showpic (externes Kommando)
-
- -----
- goff - Abmeldung von AES
-
- Syntax: goff
-
- Die Shell meldet sich als Applikation vom AES ab, und der Bildschirm wird
- gelöscht. Wird beim Beenden der Shell mit `exit' bei Bedarf automatisch
- ausgeführt.
- Wenn vor der Eingabe von goff nicht gon eingegeben worden ist, erscheint
- stattdessen eine Fehlermeldung.
-
- Siehe: gon
-
- -----
- gon - Anmeldung bei AES
-
- Syntax: gon [-q]
-
- Die Shell meldet sich bei GEM als Applikation an und initialisiert den
- Pfadnamen des Clipboards. gon öffnet eine Virtual Workstation und ini-
- tialisiert daraus die von da an von der Shell benutzten Werte für die
- Bildschirmauflösung (Grafik und Text) sowie die Größe des Bildschirm-
- speichers. Die zu Beginn der Shell initialisierten Werte gehen von einer
- Bildauflösung von 640x400 Pixeln und 80x25 Zeichen sowie einem Bildschirm-
- speicherbedarf von 32000 Bytes aus.
- gon liest (mit der AES-Funktion scrp_read) den Pfadnamen des installierten
- Clipboards. Falls ein solcher definiert ist, wird er in der Shellvariablen
- CLIPDIR abgelegt. Falls nicht, wird umgekehrt der Inhalt von CLIPDIR als
- Clipboard-Pfad installiert (mit scrp_write).
-
- Dieses Kommando ist nützlich bei der Verwendung von GEM-Applikationen.
- Außerdem muß es vor der Verwendung einiger interner Kommandos (z.B. fsel
- und mouse) benutzt werden.
- Außerdem hat gon folgende Konsequenzen:
- 1) die Tastatureingabe läuft über die AES-Funktion evnt_keybd statt über
- die Gemdos-Funktion Crawcin,
- 2) das Kommando sleep benutzt die AES-Funktion evnt_timer statt einer
- Warteschleife.
- Daraus ergibt sich, daß Accessories, die im Multitasking-Betrieb laufen,
- bei aktiviertem gon während der Tastatureingabe und dem sleep-Kommando
- aktiviert werden. Ein Accessory, das laufend die Uhrzeit auf den Bild-
- schirm schreibt, tut dies also während der Tastatureingabe, wenn gon
- aktiv ist. Dasselbe gilt für andere Hintergrund-Accessories wie Drucker-
- spooler o.ä.
- Die Tastaturpufferung funktioniert jedoch trotzdem, da die Tastaturein-
- gaberoutine erst den Tastenpuffer ausliest, bevor sie weitere Tasten mit
- evnt_keybd einliest.
-
- Wird gon mehrfach hintereinander aufgerufen, ohne daß zwischendurch goff
- aufgerufen wird, erscheint eine Fehlermeldung.
-
- Wenn das Flag -q angegeben ist, meldet sich die Shell nicht als Applikation
- an, sondern es wird folgender Rückgabewert (in $?) zurückgeliefert:
- 1 wenn gon bereits aktiviert ist,
- 0 sonst.
- Um Fehlermeldungen zu vermeiden, sollten Shellscripts, die mit Kommandos, die
- gon erfordern (z.B. fsel), folgendermaßen vorgehen:
-
- gon -q
- GONSTAT=$?
- if [ $GONSTAT = 0 ]
- then
- gon
- fi
-
- ...................... andere Kommandos
-
- if [ $GONSTAT = 0 ]
- then
- goff
- fi
- unset GONSTAT
-
- Auf diese Weise wird der Status von gon (aktiv oder nicht) in einer Variablen
- (GONSTAT) gespeichert und benutzt, um gon ggfs. zu aktivieren und später wieder
- zu deaktivieren.
- Es wird empfohlen, gon als eines der ersten Kommandos im Profile aufzurufen.
- Wenn die Shell aus dem Autoordner gestartet wird, sollte dieses Kommando
- nicht verwendet werden, da zu dieser Zeit das AES noch nicht initialisiert
- ist.
-
- Siehe: clipb
- goff
- sleep
-
- -----
- grep , egrep , fgrep - Mustersuche
-
- Syntax: grep|fgrep|egrep [-cfsl] Pattern {File}
-
- Sucht in allen angegebenen Dateien oder, falls keine Dateien angegeben sind,
- in StdIn nach Zeilen, die auf das Muster Pattern passen. Die gefundenen
- Zeilen werden mit dem Dateinamen ausgegeben.
-
- fgrep sucht feste Strings. Es werden alle Zeilen ausgegeben, die den String
- Pattern enthalten.
-
- grep sucht Muster nach den Regeln der erweiterten Wildcards (siehe okami.doc).
- Es werden alle Zeilen ausgegeben, in denen sich eine Zeichenkette befindet,
- die nach den Regeln der erweiterten Wildcards auf Pattern paßt.
- Wenn Pattern mit einer Tilde (~) beginnt, wird Pattern ab dem Beginn der Zei-
- len gesucht. Wenn Pattern mit einem Dollarzeichen ($) endet, wird Pattern am
- Ende der Zeilen gesucht. Achtung: in der Eingabe muß das Dollarzeichen in ein-
- fachen Anführungszeichen ('$') oder hinter einem Dach (^$) stehen, da es sonst
- als Einleitung einer Shellvariablen interpretiert wird.
-
- egrep sucht Muster, die vollen regulären Ausdrücken (REs) entsprechen. Diese
- werden nach folgenden Regeln gebildet:
-
- * Jedes Zeichen ist ein RE und steht für sich selber. Sonderzeichen können
- durch einen vorgestellten \ gequotet werden.
- * Ein Punkt (.) ist ein RE und steht für ein einziges beliebiges Zeichen.
- * Ein Zirkumflex (^) ist ein RE und steht für den Anfang der Zeile.
- * Ein Dollar ($) ist ein RE und steht für das Ende der Zeile.
- * Wenn x ein RE ist, dann ist auch (x) ein RE. (Klammerung)
- * Ein RE, gefolgt von einem Stern (*), bedeutet beliebig ofte (auch 0-malige
- Wiederholung des RE.)
- * Ein RE, gefolgt von einem Plus (+), bedeutet beliebig ofte, aber mindestens
- 1-malige Wiederholung des RE.
- * Ein RE, gefolgt von einem Fragezeichen (?), bedeutet einmalige oder 0-malige
- Wiederholung des RE.
- * Eine Anzahl von Zeichen in eckigen Klammern ([]) ist ein RE und steht für
- ein einziges Zeichen, und zwar eins der in den Klammern. Wenn das erste
- Zeichen in den Klammern ein Zirkumflex (^) ist, steht der RE für ein
- einziges Zeichen, und zwar ein beliebiges außer denen in den Klammern.
- Ein Minus (-) in den Klammern bedeutet "bis". Wenn ein - oder ] das erste
- Zeichen in den eckigen Klammern ist (ggfs. nach ^), dann verliert es
- seine besondere Bedeutung und steht für sich selber.
- * Zwei REs, die durch einen senkrechten Strich (|) getrennt sind, sind eine
- RE und stehen für die eine oder die andere RE.
-
- Die Funktionen zum Vergleich auf reguläre Ausdrücke stammen von Henry Spencer.
-
- Da die Vergleichsfunktionen für reguläre Ausdrücke sehr effizient arbeiten,
- ist egrep bei festen Strings schneller als grep, aber langsamer als fgrep.
-
- Flags:
- -c Es werden die Zeilennummern der gefundenen Zeilen mit ausge-
- geben.
- -f Es wird in jeder Datei nur die erste Übereinstimmung gesucht.
- -s (nur für grep) berücksichtigt Whitespace-Zeichen am Zeilen-
- anfang. Wenn -s nicht angegeben ist, werden Whitespace-Zeichen
- am Zeilenanfang ignoriert.
- -l ignoriert Groß- und Kleinschreibung.
-
- Beispiele: findet z.B. die Zeile
-
- grep Hallo Der Mann sagte "Hallo".
- Hallo, sagte der Mann.
- grep H*o Der Mann sagte nochmal "Hallo".
- Heute oder morgen.
- grep [hH]allo hallo
- Hallo
- grep -l hallo (dito)
- Der Mann sagte zum dritten Mal "Hallo".
- grep Hallo^$ Der Mann sagte zu letztenmal Hallo
- fgrep ~[a-n]*[aAbB]?^$ Hier steht "~[a-n]*[aAbB]?$".
-
- fgrep printf *.c sucht alle printf-Aufrufe in allen C-Dateien.
- fgrep "printf *.c" sucht die Zeichenkette "printf *.c" in StdIn.
- cmds | grep ~[gst] Ausgabe aller interner Kommandos, die mit g,
- s oder t beginnen.
- egrep printf^|strcpy^|fopen *.c
- sucht in allen C-Dateien alle Zeilen, die
- printf, strcpy oder fopen enthalten. Die
- |-Zeichen sind keine Pipes, sondern Teil des
- regulären Ausdruckes und müssen daher durch
- ein vorgestelltes ^ gequotet werden.
-
- Rückgabewert:
- -1 Aufruffehler
- sonst Anzahl der gefundenen Übereinstimmungen.
-
- -----
- hardcopy - Bildschirminhalt ausdrucken
-
- Syntax: hardcopy
-
- Falls ein Drucker empfangsbereit ist, wird eine Bildschirm-Hardcopy ausge-
- druckt (nur bei S/W-Monitor möglich), ansonsten erscheint eine Fehler-
- meldung. Da die Hardcopy durch eine Betriebssystemfunktion ausgeführt
- wird, muß für manche Drucker ein entsprechender Druckertreiber installiert
- sein.
-
- Rückgabewert:
- 0 Ok., es ist gedruckt worden.
- -1 Der Drucker war nicht bereit.
-
- -----
- hash - Einstellen und Auslesen der Hash-Tabelle
-
- Syntax: hash [Kommando [Pfad]]
- oder hash -r {Pattern}
- oder hash -a {file}
-
- Wenn von der Shell aus ein externes Kommando (Programm oder Shellscript) auf-
- gerufen wird, dann wird dieses auf allen in der Shellvariablen PATH gespei-
- cherten Pfaden in Verbindung mit allen in XEXT und SEXT gespeicherten Ex-
- tendern gesucht. Wenn dann der zu dem Kommando gehörende vollständige Datei-
- name gefunden ist, wird dieser in einer sog. Hash-Tabelle (benannt nach der
- zugrundeliegenden Datenstruktur) abgelegt. Beim nächsten Aufruf desselben
- Kommandos wird der Pfad dann der Hash-Tabelle entnommen, wodurch das auf-
- wendige Suchen auf der Platte entfällt.
- Ein Eintrag in der Hash-Tabelle besteht aus zwei Teilen: dem Aufruf-Kommando
- und dem vollständigen Dateinamen (Pfad).
- Mit dem Kommando hash kann diese Hash-Tabelle ausgelesen, verändert und ge-
- löscht werden. Es gibt folgende Möglichkeiten des Aufrufs:
-
- 1. hash
- (keine Parameter) Die Einträge der Hash-Tabelle werden nach
- StdOut ausgegenen. Danach folgt eine Statistik über den be-
- legten Platz in der Tabelle.
- 2. hash Cmd
- (ein Parameter) Es werden die Definitionen aller Tabellen-
- einträge, deren Kommando-Teil auf Cmd paßt (laut den Regeln
- für erweiterte Wildcards), in der Form gültiger hash-Kommandos
- ausgegeben (siehe 3.)
- 3. hash Cmd Pfad
- (zwei Parameter) Es wird ein Eintrag in der Hash-Tabelle er-
- zeugt, und zwar mit dem angegebenen Kommando und Parameter.
- Auf diese Weise kann die Hashtabelle ohne den Aufruf von
- Kommandos belegt werden.
- 4. hash -r {Pattern}
- Es werden alle Einträge, die auf Pattern passen (laut den Re-
- geln für erweiterte Wildcards), aus der Tabelle gelöscht-
- Wenn kein Pattern angegeben ist, wird die Tabelle vollständig
- gelöscht.
- 5. hash -a {File}
- Alle angegebenen Dateien werden, falls die ausführbar sind, in
- die Hashtabelle eingetragen. Als Kommandoname wird der Basis-
- name der Dateien ohne Extender benutzt. Wenn ein Kommando be-
- reits in der Hashtabelle steht, wird der Anwender gefragt, ob
- dessen Definition ersetzt werden soll. Ein Druck auf ENTER oder
- die Eingabe eines Wortes, das mit y oder Y beginnt, heißt ja,
- jede andere Eingabe heißt nein. Wenn die Eingabe mit q oder Q
- beginnt, wird das hash-Kommando abgebrochen.
- Wenn kein File angegeben ist, werden alle Dateien des aktuellen
- Directories benutzt.
-
- Beispiele:
-
- hash
- Der Inhalt der Hashtabelle wird ausgegeben.
-
- hash a*
- Es werden die Definitionen aller Kommandos ausgegeben, die mit a
- beginnen.
-
- hash cc c:/compiler/cc.ttp
- Für das Kommando cc wird der Pfad "c:/compiler/cc.ttp" festgelegt.
- In Zukunft wird dieser Pfad durch das Kommando cc angesprochen, ohne
- daß auf der Platte gesucht werden muß. Es ist dafür nicht notwendig,
- daß c:/compiler in $PATH enthalten ist.
-
- hash -r cc
- Obiger Eintrag wird wieder aus der Tabelle entfernt.
-
- hash -r
- Die Tabelle wird gelöscht.
-
- hash -a c:/bin/* c:/usr/bin/*
- Alle ausführbaren Dateien (Shellscripts und Binärprogramme) in den
- Directories c:/bin und c:/usr/bin werden in die Hashtabelle einge-
- tragen.
-
- hash * >hash.sh
- Die Hashtabelle wird in eine Datei geschrieben. Diese Datei ist ein
- Shellscript, das, wenn es ausgeführt wird, die Hashtabelle auf den
- aktuellen Stand restauriert. Dieses Kommando kann z.B. mit trap
- für das Ende der Shell eingestellt werden, die Datei hash.sh kann
- vom Profile aus gestartet werden.
-
- -----
- hd - Hex-Dump
-
- Syntax: hd [-b] [File]
-
- Gibt einen Hex-Dump von StdIn oder, falls angegeben, von File, nach StdOut.
- Der Hexdump ist folgendermaßen aufgebaut:
-
- nnnnnn hh hh ..... hh hh aaaaaaaa aaaaaaaa
-
- nnnnnn: Die Byte-Nummer (Hex)
- hh: jeweils ein Byte in Hex (insgesamt 16)
- aa...a: die entsprechenden Bytes in Ascii (ein Punkt, falls nicht druckbar.
- Es wird der Punkt mit Ascii-Code 0xfa benutzt.).
-
- Flags: -b An der Stelle aa...a werden keine Punkte, sondern immer die
- Ascii-Zeichen ausgegeben, auch wenn diese nicht druckbar
- sind. Eine solche Ausgabe kann man dann z.B. zu dem Kommando
- raw -n pipen.
-
- Um einen flüchtigen Überblick über den binären Inhalt einer Datei zu ge-
- winnen, reicht es in manchen Fällen aus, das Kommando raw zu benutzen, das
- wesentlich schneller ist und eine kürzere Ausgabe erzeugt.
-
- Beispiele:
- 1) Hex-Dump einer Binärdatei:
- hd sh.ttp
-
- 2) Hex-Dump der Inhalte der Speicherstellen 0xabc000 bis 0xabcfff:
- memex 0xabc000 0xfff | hd
-
- 3) Seitenweiser Hexdump:
- hd sh.ttp | pg
-
- 4) Hexdump der Dateien test1.tos, test2.tos und test3.tos in die Datei
- test.hd:
- hd test1.tos test2.tos test3.tos > test.hd
-
-
- Siehe auch: raw
-
- -----
- help - Kurzanleitung mit Syntaxerklärung
-
- Datei: $ETC/help
- Syntax: help
-
- Die Datei Datei $ETC/help wird nach StdOut ausgegeben. Die Ausgabe erfolgt
- mit dem Kommando pg.
-
- Siehe: pg
-
- -----
- history - history-Tabelle laden und speichern
-
- Syntax: history [-(l|s)]
-
- Wenn kein Parameter angegeben ist, werden alle Einträge der Tastatur-History-
- tabelle nach StdOut geschrieben, der zuletzt eingegebene Eintrag zuletzt.
- (Das ist, wenn history von der Tastatur eingegeben wurde, das history-Kommando
- selber).
- Wenn der Parameter -l angegeben ist, werden Zeilen von StdIn eingelesen und
- nacheinander in die History-Liste eingefügt, so als ob sie über die Tastatur
- eingegeben würden.
-
- Wenn das Flag -s angegeben ist, wird nur eine Statistik über freie und belegte
- Plätze in der History-Liste ausgegeben. Hierbei ist zu beachten, das die His-
- tory-Liste in der Art eines Ringpuffers organisiert ist, was bedeutet, daß sie
- niemals überlaufen kann.
-
- Mit den folgenden Zeilen im Profile:
-
- HISTFILE=$ETC/history
- if [ -f $HISTFILE ]
- then
- history -l <$HISTFILE
- fi
- trap +history ^>$HISTFILE ^; chmod +h $HISTFILE
-
- wird bei jedem Programmende die History-Liste in die Datei $ETC/history ge-
- schrieben (und die Datei unsichtbar gemacht), und bei Programmstart wird die
- History aus dieser Datei wiederhergestellt.
- Anmerkung:
- 1) es genügt:
- trap +history ^>$HISTFILE
- , aber dann ist die Datei nicht unsichtbar.
- 2) das Pluszeichen vor history verhindert das Überschreiben eines evtl. be-
- reits definierten Trap-Kommandos.
-
- Siehe auch: trap
- okami.doc zum Thema Tastatureingabe
-
- -----
- if , then , else , fi - Bedingte Ausführung
-
- Syntax: if Kommando1
- then
- Kommandos2
- [else
- Kommandos3]
- fi
-
- Mit dieser Befehlsfolge ist es möglich, Teile eines Shellscripts nur
- dann auszuführen, wenn eine bestimmte Bedingung zutrifft. Die Verwen-
- dung bei Tastatureingabe ist ebenfalls möglich, aber nicht unbedingt
- sinnvoll.
-
- Wenn der Rückgabewert von Kommando1 ungleich 0 ist, werden die unter
- Kommandos2 angegebenen Kommandos ausgeführt. Wenn der Rückgabewert
- von Kommando1 gleich 0 ist, werden die unter Kommandos3 angegebenen
- Kommandos ausgeführt, falls angegeben. Hierbei sind Kommandos2 und
- Kommandos3 Folgen von beliebig vielen (auch null) beliebigen Shellkommandos
- (auch weitere if-else-fi-Konstruktionen). Es können über 32000 if's ge-
- schachtelt werden.
-
- Als Kommando1 kann ein beliebiges Shell-Kommando stehen. Die meisten
- internen Kommandos geben im Fehlerfall -1, sonst 0 zurück. Bei einigen
- Kommandos (z.B. grep) hat der Rückgabewert eine andere Bedeutung.
- Typische Kandidaten für "Kommando1" sind true, false und test (bzw. "[").
-
-
- Beispiele:
-
- Die folgenden Beispiele sind als Ausschnitte von Shellscripts zu verstehen.
-
- 1) Ausgabe der Information, ob eine Datei existiert
-
- if test -f datei.txt
- then
- echo datei.txt existiert
- else
- echo datei.txt existiert nicht
- fi
-
- 2) Feststellen, ob ein Muster in einer Datei vorhanden ist
- (Die Ausgabe von grep wird nach NULL: umgeleitet, damit sie nicht die
- Bildschirmausgabe stört.)
-
- if grep Muster datei.dat >NULL:
- then
- echo Das Muster ist vorhanden.
- else
- echo Es ist nicht vorhanden.
- fi
-
- 3) Sicherheitsabfrage vom Benutzer einholen. Wenn der Benutzer "n" ein-
- gibt, wird das Programm abgebrochen (d.h. das augenblickliche Shell-
- script beendet).
-
- echo "Soll das Programm fortgesetzt werden? (j/n)"
- read JAODERNEIN
- if [ $JAODERNEIN = n ]
- then
- exit
- fi
-
- 4) Numerische Vergleiche:
-
- echo Bitte geben Sie ihr Alter ein.
- read ALTER
- if [ $ALTER -ge 18 ]
- then
- echo Sie sind erwachsen.
- else
- if [ $ALTER -lt 14 ]
- then
- echo Du bist ein Kind.
- if [ $ALTER -lt 6 ]
- then
- echo Du hast geschummelt, mit $ALTER kann man noch nicht lesen.
- fi
- else
- echo Du bist ein Jugendlicher.
- fi
- fi
-
- 5) Das Kommando keydef soll ausgeführt werden, aber nur, wenn es auch als in-
- ternes Kommando vorhanden ist.
-
- if [ keydef -t i ]
- then
- keydef F1 "dir"
- else
- echo keydef ist nicht vorhanden!
- fi
-
- 6) Eine Art Neuimplementation des type-Kommandos, es wird der Typ des Kommandos
- $COM ausgegeben.
-
- if [ $COM -t f ]
- then
- echo $COM is a function
- fi
- if [ $COM -t i ]
- then
- echo $COM is a shell builtin
- fi
- (usw.)
-
- 7) Feststellen, ob das Kommando upn extern oder intern ist:
-
- if [ upn -t sb ]
- then
- echo upn ist ein externes Kommando
- else
- echo upn ist intern oder Shellfunktion
- fi
-
- 8) Testen, ob ein Shellscript unter der Okami-Shell ausgeführt wird:
-
- if [ +v OKAMISHELL ]
- then
- ...
- else
- echo Wasn das fürne Shell?
- fi
-
- Siehe auch: test
- true
- false
- while
-
- -----
- indir - Kommando-Indirektion
-
- Syntax: indir String
-
- Der String wird ausgewertet (Shellvariablen expandiert, Command Substitution
- durchgeführt etc.) und auf StdOut ausgegeben. String wird also insgesamt
- zweimal ausgewertet: einmal bei der Eingabe des Kommandos und das Ergebnis
- dieser Auswertung nochmal durch das indir-Kommando. Dies ist nützlich beim
- Arbeiten mit Variablen, die andere Variablennamen beinhalten, für doppelte
- Command Substitution usw.
-
- Beispiele:
- VAR=hallo
- POINTER=VAR
- echo $POINTER ergibt VAR
- echo ^$POINTER ergibt $POINTER
- indir ^$POINTER ergibt VAR
- echo ^$$POINTER ergibt $VAR
- indir ^$$POINTER ergibt hallo
-
- ... also ein Zugriff auf den Inhalt der Variablen VAR ohne direkten Zugriff
- auf VAR. indir entspricht also in dieser Verwendung ungefähr dem Pointer-
- Konzept moderner Programmiersprachen.
-
- VAR=^`echo hallo^`
- echo $VAR ergibt `echo hallo`
- indir $VAR, wie gehts ergibt hallo, wie gehts
-
- ... also indirekter Zugriff auf Shellkommandos, die z.B. in einer Shellvaria-
- blen liegen. In obigem indir-Kommando wird zuerst $VAR zu `echo hallo` expan-
- diert, und indir führt dann die Command Substitution aus.
-
- REVON='^033p' speichern eines VT52-Codes
- echo $REVON ergibt ^033p
- indir $REVON führt den VT52-Code aus.
-
- -----
- keyb - Tastatur-Konfiguration
-
- Syntax: keyb [-]
- oder keyb [(+|-)a] [(+|-)b] [(+|-)c] [-iInit] [-rRepeat] [-k]
-
- Mit diesem Kommando wird die Tastatur konfiguriert. Folgende Konfigurationen
- sind möglich:
- Das Auto-Repeat kann ein- und ausgeschaltet werden,
- Das Tastenklicken kann ein- und ausgeschaltet werden,
- Die Klingel bei Ausgabe von Ascii BEL (0x7) kann ein- und ausge-
- schaltet werden,
- Die Zeitspanne bis zum Einsetzen des Auto-Repeat und die Wieder-
- holrate können eingestellt werden,
- Der Tastaturpuffer kann gelöscht werden.
- In der ersten Form, also beim Aufruf ohne Parameter oder nur mit einem
- Minuszeichen, wird die Konfiguration ausgegeben. Wenn als Parameter ein
- Minuszeichen angegeben ist, erfolgt die Ausgabe so, daß sie später wieder
- als Parameter für keyb benutzt werden kann, z.B.:
- X=`keyb -`
- ....................... sonstige Kommandos
- keyb $X
- speichert die Konfiguration und stellt sie danach wieder her.
-
- Bei den Flags a, b und c bedeutet + einschalten und - ausschalten.
-
- a Auto-Repeat ein/aus
- b Ascii-BEL ein/aus
- c Tastenklick ein/aus
-
- Bei den Flags -i und -r wird die entsprechende Zeitspanne in 1/50 Sekunden
- angegeben.
-
- -i die Zeitspanne bis zum Einsetzen des Auto-Repeat,
- -r die Zeitspanne zwischen zwei Wiederholungen.
-
- Das Flag -k hat eine Sonderbedeutung: wenn es angegeben ist, löscht
- keyb den Gemdos- und Bios-Tastaturpuffer. Diese Option kann benutzt
- werden, um nach längeren Shellscripts evtl. gedrückte Tasten aus dem
- Puffer zu entfernen.
-
- ACHTUNG: bei diesem Kommando können die Flags nicht zu Gruppen zusammenge-
- faßt werden, d.h.
- keyb -abc
- ist falsch, es muß
- keyb -a -b -c
- heißen.
-
- Siehe auch: cursor
- scr
- mouse
-
- -----
- keydef - Umdefinition der Tastatur
-
- Syntax: keydef [+(n|s|c|a)] Scancode [Text|-]
- keydef clear|list|help
-
- Mit diesem Kommando kann die Ausgabe aller Tasten umdefiniert werden. Es ist
- damit möglich, jeder Taste neue Zeichenketten zuzuordnen, die beim Drücken
- dieser Taste zu erzeugen sind. Damit kann man z.B. die Buchstabentasten um-
- sortieren, aber auch die F-Tasten mit Funktionen belegen.
-
- Jedes keydef-Kommando betrifft eine Taste, die durch den Scancode und die
- Steuertaste bestimmt ist (z.B. Ctrl A etc.)
-
- Wenn eins der Flags +n, +s, +c oder +a angegeben ist, bestimmt dieses, für
- welche Steuertaste die Umdefinition wirkt. Es bedeuten:
- +n keine Steuertaste
- +s eine der Shift-Tasten
- +c die Control-Taste
- +a die Alternate-Taste
- Wenn keins dieser Flags angegeben ist, wird +n angenommen.
-
- Der Scancode kann in einem der folgenden Formate angegeben sein:
- 1) ein Minuszeichen, gefolgt von einer Zahl; diese repräsentiert den
- gewünschten Scancode direkt.
- 2) ein Schlüsselstring. Eine Liste der möglichen Schlüsselstrings
- finden Sie in dieser Datei unter dem Stichwort "keydefcode".
-
- Wenn kein Text angegeben ist, wird die betreffende Tastendefinition (falls
- vorhanden) ausgegeben.
- Wenn der Text aus einem Minuszeichen besteht, wird die betreffende Tasten-
- definition (falls vorhanden) gelöscht.
- Ansonsten wird der Text als neue Tastendefinition gespeichert, eine evtl. be-
- reits vorhandene Definition derselben Taste wird dabei überschrieben.
-
- Wenn der Text Leerzeichen oder Sonderzeichen enthält, muß er in Anführungs-
- zeichen eingeschlossen sein.
-
- Wenn der Text mit einem Pluszeichen beginnt, wird, wenn in der Tastatur-
- eingabe die betreffende Taste gedrückt wird, die Eingabezeile durch den Text
- ersetzt (ansonsten wird der Text an die bisherige Eingabe angehängt).
- Wenn der Text mit "^c" endet, wird nach Druck auf die betreffende Taste die
- Eingabezeile ausgeführt.
-
- Wenn der Text mit einem Ausrufezeichen beginnt, stellt er nicht einen durch
- die Taste zu erzeugenden Ascii-String, sondern eine Umdefinition des durch
- die Taste zu erzeugenden Shift-, Scan- und Ascii-Codes dar. Das Format
- lautet
- ![+x]Scancode [Asciicode]
- x ist dabei entweder n, s, c oder a und bewirkt die Steuertastenkombination.
- Scancode wird wie oben beschrieben angegeben und ist der neue zu erzeugende
- Scancode.
- Asciicode ist ein einziges Zeichen, das den neuen Ascii-Code der Taste be-
- schreibt.
-
- Wenn als einziger Parameter "clear" angegeben ist, werden sämtliche Tasten-
- definitionen gelöscht.
- Wenn als einziger Parameter "list" angegeben ist, wird eine Liste aller vor-
- handener Definitionen erzeugt, und zwar in Form von keydef-Kommandos.
- Wenn als einziger Parameter "help" angegeben ist, wird eine Liste aller Scan-
- code-Schlüsselstrings erzeugt.
-
- Alle Umdefinitionen betreffen ausschließlich die Tastatureingabe der Shell.
-
- Beispiele:
-
- 1) Amerikanische Tastatur durch Vertauschen von y und z.
- keydef y z
- keydef z y
- keydef -s y Z
- keydef -s z Y
-
- Das jeweils erste y bzw. z ist die Angabe des umzudefinierenden Scancodes.
- Das zweite ist die Ascii-Zeichenkette, die durch die Taste erzeugt werden
- soll.
-
- 2) Ausführen von "dir *.c" bei Druck auf F1:
- keydef f1 "+dir *.c^c"
-
- 3) Ausgabe der Definition von Ctrl Help:
- keydef +c help
- oder:
- keydef +c -0x62
- Einmal wird die Help-Taste durch den Code-String "help" und einmal direkt
- durch den Scancode 0x62 angegeben.
-
- 4) Löschen der Definition von Shift F5:
- keydef -s F5 -
-
- 5) Ausgabe aller Tastendefinitionen in eine Datei:
- keydef list >keys.sh
- Die Datei keys.sh ist dann ein Shellscript, das, wenn es gestartet wird,
- alle Tastendefinitionen installiert.
-
- 6) Ein Druck auf Shift-F6 soll dasselbe bewirken wie Help. Dafür wird der
- von F6 bewirkte Scancode auf den von Help umgebogen.
- keydef +s F6 "!help"
-
- 7) Mit Ctrl-Esc wird die Shell beendet, Esc alleine löscht nur die Eingabe-
- zeile (übernimmt also die Funktion von Clr-Home), Clr-Home löscht den
- Bildschirm:
- keydef +c ESC "!+c D"
- keydef ESC "!CLR"
- keydef CLR "+cls ^c"
- Das erste keydef belegt Ctrl-Esc mit Ctrl-D, das zweite belegt Esc alleine
- mit der ursprünglichen Funktion der Clr-Home-Taste. Das dritte keydef
- sorgt dafür, daß bei Druck auf Clr-Home das Kommando cls ausgeführt
- wird.
- => Man kann alle vordefinierten Tastenfunktionen beliebig auf neue Tasten
- legen!!!!
-
- 8) Ein Druck auf Undo soll ein Z eingeben.
- keydef undo "!Z z"
- keydef +s undo "!+s Z Z"
- Das erste keydef sorgt dafür, daß bei Druck auf Undo der Scancode von Z
- und der Ascii-Code von z benutzt wird. Das zweite keydef macht dasselbe
- für Shift Undo und erzeugt ein großes Z.
-
- 9) Löschen aller Tastendefinitionen:
- keydef clear
-
- Siehe auch: keydefcode
-
- -----
- keydefcode - Code-Strings für Scancode-Angaben des keydef-Kommandos
-
- Bei allen Codes ist die Groß/Kleinschreibung ohne Bedeutung. Es gilt:
- * Die Strings A bis Z und 0 bis 9 stehen für die jeweilige Buchstaben-
- bzw. Zahlentaste.
- * Die F-Tasten werden durch ein vorgestelltes F gekennzeichnet (z.B.
- F6, F10,...)
- * Tasten des Zehnerblocks sind durch ein vorgestelltes Z gekenn-
- zeichnet. Z5 ist also die 5 auf dem Zehnerblock.
-
- Code Tastenaufschrift
- ---- ----------------
- Alpha-Block
- ESC Esc
- QUES ß ?
- ACC ' `
- HASH # ^
- BS Backspace
- TAB Tab
- AT @ Ü \
- PLUS + *
- CR Return (*)
- DEL Delete
- OB [ { Ö
- CB ] } Ä
- TIL ~ |
- LESS < >
- COMMA , ;
- DOT . :
- MINUS - _
- SPC die Leertaste
- Cursor-Block
- UNDO Undo
- HELP Help
- INS Insert
- CLR Clr Home
- UPAR Pfeil auf
- DNAR Pfeil ab
- LTAR Pfeil nach links
- RTAR Pfeil nach rechts
- Zehnerblock
- ZMINUS -
- ZPLUS +
- ZOP (
- ZCP )
- ZSLASH /
- ZAST *
- ZDOT .
- ZCR Enter (*)
-
-
- (*) Eine Umdefinition dieser Tasten ist zwar möglich, aber bei der Tastatur-
- eingabe ohne Wirkung.
-
- -----
- logo - Das Okami-Logo ausgeben
-
- Syntax: logo [x [y]]
-
- Das Okami-Logo wird an die Bildschirmkoordinaten x,y gezeichnet. Die Default-
- werte von x und y sind 0. x muß ein Vielfaches von 32 sein.
- Bei nicht-monochromer Bildauflösung, wenn also nicht jedem Pixel ein Bit im
- Bildschirmspeicher zugeordnet ist, erzeugt dieses Kommando keine Ausgabe.
- In diesem Fall wird -1 zurückgegeben.
- Zu große oder zu kleine Werte von x und y werden auf die jeweiligen Maximal-
- werte der Bildschirmauflösung gesetzt.
- Um Konflikte mit dem Cursor-Blinken zu vermeiden, sollte, wenn das Logo über
- die aktuelle Cursorposition geschrieben wird, vorher der Cursor mit cursor -v
- unsichtbar gemacht werden.
-
- -----
- ls - Dateien auflisten
-
- Syntax: ls [-adlfkCvi] [-xtbnr] {Filespec}
- ls -! Filespec {Filespec}
-
- Gibt eine Liste aller Dateien, deren Namen auf Filespec passen, nach StdOut
- aus. Filespec nicht angegeben bedeutet .\* (alle Dateien im aktuellen Direc-
- tory).
- Die Namen von Ordnern werden in [] (eckige Klammern) eingefasst.
- Die Namen von ausfuerbaren Dateien werden in <> (spitze Klammern) eingefasst.
- Flags:
- -a Auch versteckte und System-Dateien werden ausgegeben.
- -d Wenn Filespec der Name eines Ordners ist, wird der Ordner
- selber und nicht sein Inhalt ausgegeben.
- -l Angaben ueber Dateiattribute, Dateilaenge und Datei-
- datum und -zeit werden ausgegeben. Außerdem werden am Ende
- der Liste die Summe aller Dateilängen und die Anzahl der
- Dateien ausgegeben (bei mehr als einer Datei). Siehe unten (*).
- -f Gibt bei -l bei den Dateiattributen mit aus, ob eine aus-
- führbare Datei schnellgeladen wird. Siehe unten (*). Ist ohne
- Wirkung, wenn -l nicht angegeben ist.
- -k Keine [] und <> um Dateinamen.
- -C Die Dateien werden in mehreren Spalten ausgegeben.
- -v Es wird nur der Diskettenname ausgegeben.
- -i Zu jeder Datei wird anhand einer Indexdatei eine Erklärung
- ausgegeben. siehe unten (**).
- -x Die Dateien werden nach Extendern sortiert ausgegeben.
- -t Die Dateien werden nach dem Anlagezeitpunkt der Datei
- sortiert ausgegeben (die älteste Datei zuerst).
- -b Die Dateien werden nach ihrer Länge sortiert ausge-
- geben (die kürzeste Datei zuerst).
- -n Die Dateien werden in der Reihenfolge ausgegeben, in der
- sie physikalisch gespeichert sind. -r ist ohne Wirkung.
- -r Die Reihenfolge der Dateien wird umgekehrt (außer bei -n).
-
- (*) Anmerkung zu -l und -f:
- Die Dateiattribute werden analog dem chmod-Kommando ausgegeben. Für ein ge-
- setztes Attribut erscheint der entsprechende Buchstabe, für ein nicht ge-
- setztes erscheint ein Minuszeichen.
- Wenn die Datei ausführbar ist, erscheint als letztes ein x. Über die Ausführ-
- barkeit entscheidet der Dateinamen-Extender und die Shellvariablen XEXT und
- GEXT.
- Wenn das Flag -f angegeben ist, wird bei ausführbaren Programmdateien fest-
- gestellt, ob das Fastload-Bit im Programmheader gesetzt ist. Wenn das der
- Fall ist, wird statt dem x ein f ausgegeben.
- Wenn -f nicht angegeben ist, wird das Fastload-Bit nicht beachtet. Das ist so,
- da, um das Fastload-Bit zu ermitteln, auf die Datei selber (und nicht nur auf
- den Directory-Eintrag) zugegriffen werden muß, was die Ausgabe von ls be-
- sonders bei Disketten sehr verlangsamt.
-
- (**) Anmerkung zu -i:
- Wenn sich in demselben Directory wie die auszugebenden Dateien eine Datei
- namens `_index' befindet, so wird diese, wenn das Flag -i angegeben ist,
- eingelesen. Diese Datei enthält erklärende Anmerkungen zu den einzelnen
- Dateien des Directories, in dem sie sich befindet, und zwar in dem folgenden
- Format:
- - Leerzeilen und Zeilen, die mit einem Doppelkreuz beginnen, sind
- Kommentarzeilen.
- - Alle anderen Zeilen haben die Form
- Pattern Text
-
- Hierbei ist `Pattern' ein Muster nach den Regeln der erweiterten Wildcards,
- das `Text' als den auszugebenden Text für alle Dateien, die auf `Pattern'
- passen, festlegt. Leerzeichen am Anfang und Ende der Zeile werden ignoriert,
- Text selber darf Leerzeichen enthalten. Pattern und Text müssen durch
- mindestens ein Leerzeichen getrennt sein. Beispiel: die Zeile
- *.c C-Quellcode
- legt den Text "C-Quellcode" für alle C-Dateien fest.
- Achtung: für eine Datei ist die _index-Datei zuständig, die sich in demselben
- Directory wie die Datei befindet. Bei `ls -i ../abc/*.c' würde also die Datei
- `../abc/_index' benutzt.
- Sinn dieser Sache ist weniger, Dateien zu klassifizieren, als vielmehr indi-
- viduelle Erklärungstexte zu den einzelnen Dateien schreiben zu können. Daher
- wird auch in jedem Directory eine eigene Indexdatei verwaltet.
-
- Wenn keins der Flags -x, -t, -b, -n angegeben ist, werden die Dateien nach
- dem Dateinamen sortiert ausgegeben (in aufsteigender Reihenfolge). Dann
- und bei -x erscheinen die Ordner nach den Dateien.
-
- Wenn als erstes Flag -! angegeben ist, werden alle folgenden Angaben als
- Dateispezifikationen betrachtet und von den betreffenden Dateien Attribute
- (binär), Datum und Uhrzeit (hexadezimal), Dateigröße (dezimal) und der voll-
- ständige Dateiname ausgegeben, und zwar in der physikalischen Reihenfolge.
- Es können keine anderen Flags mit -! benutzt werden. Diese Option dient zu
- Debug-Zwecken der Shell.
-
- Beispiele:
- 1) Liste aller Dateien im aktuellen Verzeichnis, Ausgabe in mehreren
- Spalten:
- ls -C
-
- 2) Liste aller C-Quelldateien im aktuellen Verzeichnis, sortiert nach
- Anlagedatum, die jüngste Datei zuerst:
- ls -tr *.c
-
- 3) Liste aller .PRG-Dateien im Ordner d:\shell mit Dateiattributen, Datei-
- länge und -Datum:
- ls -l d:\shell\*.prg
-
- 4) Liste aller Dateien im Ordner d:\shell mit Attributen, Länge und Datum,
- sortiert nach Dateilänge:
- ls -l -b d:\shell
-
- 5) Liste von Attributen, Länge und Datum des Ordners d:\shell:
- ls -ld d:\shell
-
- 6) Ausgabe des Diskettennamens von Diskette A:
- ls -v A:\
-
-
- Rückgabewert:
- -1 Aufruffehler
- sonst die Anzahl der ausgegebenen Dateien.
-
- Siehe auch: chmod
-
- -----
- man - Online-Hilfe ausgeben
-
- Syntax: man [Kommando]
-
- Dies ist der Kommandozeilen-Zugriff auf das Online-Manual der Shell. Ent-
- spricht der Eingabe von "Kommando" und einem Druck auf die Help-Taste.
- Siehe okami.doc für weitere Details.
-
- -----
- mem - Freien Hauptspeicher ermitteln
-
- Syntax: mem [-b]
-
- Wenn kein Flag angegeben ist, wird die Anzahl der freien RAM-Bytes (genauer:
- die Länge des längsten zusammenhängenden Blocks) ausgegeben.
- Wenn das Flag -b angegeben ist, wird die Größe der Speicherbänke 0 und 1 sowie
- die Gesamtgröße des RAM-Speichers ausgegeben.
-
- -----
- memex - Hauptspeicher auslesen
-
- Syntax: memex [-acwls] Startadr [Anzahl]
-
- Kopiert eine Anzahl von Speicherstellen nach StdOut. Falls Anzahl nicht
- angegeben ist, wird Anzahl=1 gesetzt.
-
- Flags: -s Vor dem Auslesen wird der Prozessor in den Supervisor-Modus
- versetzt. Dies ist sinnvoll beim Auslesen von System-
- adressen.
- -a Liest Anzahl Bytes von Startadr an und gibt die Inhalte
- als Ascii-Zeichen aus. Bei nicht-druckbaren Zeichen werden
- die entsprechenden Ascii-Codes (z.B. NUL, SOH etc.) ausge-
- geben.
- -c Liest Anzahl Bytes von Startadr an und gibt die Inhalte
- numerisch (im Bereich 0...0xff) aus.
- -w Liest Anzahl Worte (je 16 bits) von Startadr an und gibt
- die Inhalte numerisch (im Bereich 0...0xffff) aus.
- -l Liest Anzahl Langworte (je 32 bits) von Startadr an und
- gibt die Inhalte numerisch (im Bereich 0...0xffffffff)
- aus.
- Wenn keins von -a, -c, -w, -l angegeben ist, werden Anzahl Bytes
- von StartAdr an nach StdOut kopiert.
- Wenn bei -w oder -l eine ungerade Adresse angegeben ist, wird diese
- vor Benutzung dekrementiert.
-
- Beispiele:
- 1. Ermitteln der Anzahl der angeschlossenen Diskettenlaufwerke durch Aus-
- lesen der betreffenden System-Speicherstelle:
- memex -s -w 0x4a6
- 2. Ausgeben von 100 Bytes von Speicherstelle 0x12345 an als Hexdump:
- memex 0x12345 100 | hd
-
- -----
- mkdir - Ordner erzeugen
-
- Syntax: mkdir [-r] Ordner {Ordner}
-
- Erzeugt die angegebenen Ordner. Wenn das Flag -r angegeben ist, werden voll-
- ständige Pfade erzeugt, ansonsten nur die zuletzt angegebenen Ordner.
- Achtung: wenn -r angegeben ist, wird der Basisname als der Name einer Datei
- betrachtet und nicht angelegt. Um auch den Basisnamen als Ordner anzulegen,
- muß er mit einem Backslash (oder Slash) abgeschlossen sein.
-
- Beispiel:
- mkdir c:/work/test
- erzeugt den Ordner test als Unterordner von c:/work;
- wenn c:/work noch nicht existiert, kommt ein Fehler.
- mkdir -r c:/work/test/data
- erzeugt die Ordner c:/work und c:/work/test, falls
- noch nicht vorhanden. Eine Datei oder Ordner namens
- data wird nicht angelegt.
- mkdir -r c:/work/test/data/
- erzeugt die Ordner c:/work, c:/work/test und
- c:/work/test/data, falls noch nicht vorhanden.
- FILE=d:/data/files/x.out
- mkdir -r $FILE
- legt alle Ordner an, die für die Datei $FILE be-
- nötigt werden, also den Pfad d:/data/files. Die Datei
- x.out wird nicht angelegt. Nach diesem Kommando
- können z.B. Ausgaben nach $FILE umgeleitet werden.
-
- Rückgabewert: Anzahl der erzeugten Ordner (oder Pfade bei -r).
-
- -----
- more - SIEHE pg
-
- -----
- mouse - Die Maus konfigurieren und abfragen
-
- Syntax: mouse [+|-] [Form] [XVar [YVar]]
-
- Dieses Kommando dient zwei verschiedenen Zwecken: 1) der Konfiguration
- des Mauszeigers und 2) der Abfrage der Mauskoordinaten. Das Kommando muß
- mit mindestens einem Parameter aufgerufen werden, es können aber alle
- der möglichen Parameter gleichzeitig benutzt werden.
- Es handelt sich hierbei um die Benutzung von AES-Funktionen, weswegen vor
- Benutzung von mouse die Shell als Applikation bei GEM angemeldet werden
- muß. Dies geschieht mit dem Kommando gon.
-
- Parameter:
- + der Mauszeiger wird sichtbar gemacht.
- - der Mauszeiger wird unsichtbar gemacht.
- Form es wird die Form des Mauszeigers eingestellt. Anstelle von
- Form steht eine Zahl zwischen 0 und 7, es bedeuten:
- 0 Pfeil
- 1 Cursor (Klammer)
- 2 Biene
- 3 Hand mit Zeigefinger
- 4 flache Hand
- 5 dünnes Fadenkreuz
- 6 dickes Fadenkreuz
- 7 umrahmtes Fadenkreuz
- XVar der Name der Variablen, in die die x-Koordinate der Maus
- gespeichert werden soll. Anstelle von XVar steht ein belie-
- biger Variablenname außer den Ziffern 0 bis 7 (die als
- Variablennamen vom Benutzer ohnehin nicht verändert werden
- sollten.)
- YVar analog für die y-Koordinate.
-
- Beispiel:
- mouse + 0
- Der Mauszeiger wird sichtbar und auf einen Pfeil eingestellt.
- mouse X Y
- echo Die Mauskoordinaten sind $X und $Y
- Abfrage der Mauskoordinaten.
-
- ACHTUNG: Die Einstellung der Maus erfolgt mit der AES-Funktion graf_mouse.
- AES verwaltet das Ein- und Ausschalten der Maus in einem Puffer, d.h. wenn
- die Maus dreimal ausgeschaltet wird, muß sie auch dreimal wieder eingeschal-
- tet werden, bevor sie sichtbar wird. Da mehrfaches Einschalten der Maus zu
- Verwirrungen bei GEM-Formularen führen kann, sollte man hier mit großer
- Vorsicht vorgehen. Wenn es zu Problemen kommt, hilft jedoch meistens die
- Rückkehr zum Desktop.
- Die Mauskoordinaten werden mit der AES-Funktion graf_mkstate bestimmt.
- Erfahrungsgemäß führt dies regelmäßig zu falschen Werten, da das Bildschirm-
- scrolling die Mauskoordinaten beeinflußt. Zuverlässig sind die Werte zu-
- mindest nach einem cls.
-
- Siehe auch: cursor
- keyb
- scr
-
- -----
- mv - Dateien umbenennen oder verschieben
-
- Syntax: mv [-avif] Source {Source} Dest
-
- Wenn Dest der Name eines existierenden Ordners ist, werden alle Dateien
- Source in diesen Ordner verschoben. Der neue Dateiname der Dateien ist dann
- Dest/`basename Source`.
- Wenn Dest nicht der Name eines existierenden Ordners ist, wird die Datei
- Source in die Datei Dest umbenannt. In diesem Fall darf nur ein Source an-
- gegeben sein.
- Die Source-Angaben dürfen erweiterte Wildcards enthalten. Die Maximalanzahl
- der auf diese Weise benutzbaren Source-Dateien ist 100.
- Source und Dest können in verschiedenen Ordnern und auf verschiedenen Lauf-
- werken liegen. Beim Verschieben auf einem Laufwerk werden keine Daten außer
- den Directoryeinträgen bewegt, wodurch das Verschieben sehr schnell geht.
- Beim Verschieben auf ein anderes Laufwerk werden die Dateien mit cp kopiert
- und dann die Sourcedateien gelöscht.
- Ab TOS 1.4 können mit diesem Kommando auch die Namen von Ordnern geändert
- werden. Es können allerdings keine Ordner verschoben werden.
-
- Flags:
- -a Die Quelldatei wird an die Zieldatei angehängt.
- -v Bei jeder bearbeiteten Datei wird eine Meldung ausgegeben.
- Das ist nützlich beim Kopieren von vielen Dateien auf einmal.
- -i Fragt vor dem Überschreiben bereits vorhandener Zieldateien
- nach, ob diese überschrieben werden dürfen.
- -f Überschreibt keine bereits vorhandenen Dateien.
-
- Beispiele:
- mv sh.ttp sh.prg Umbenennen einer Datei.
- mv sh.ttp d:/shell Verschieben einer Datei in einen Ordner, der
- neue Name ist d:/shell/sh.ttp.
- mv e:/source/*.c a:/ Verschieben aller C-Dateien auf die Diskette.
- mv -f e:/source/*.c a:/ dito, aber es werden keine Dateien über-
- schrieben.
- mv docs anleitg Ändern eines Ordnernamens, nur bei >=TOS1.4.
-
- Siehe auch: cp
-
- -----
- num - Zahlen in verschiedenen Zahlensystemen ausgeben
-
- Syntax: num [-bodhxa] Zahl {Zahl}
-
- Die Zahlen werden in binärer, oktaler, dezimaler und hexadezimaler Form
- sowie als Ascii-Zeichen ausgegeben. Wenn das entsprechende Ascii-Zeichen
- nicht druckbar ist, wird die Bezeichnung des Zeichens (z.B. NUL, SOH etc.)
- ausgegeben.
-
- Flags: -b Die Zahlen werden nur im Binärsystem ausgegeben.
- -o Die Zahlen werden nur im Oktalsystem ausgegeben.
- -d Die Zahlen werden nur im Dezimalsystem ausgegeben.
- -h Die Zahlen werden nur im Hexadezimalsystem ausgegeben.
- -x Wie -h.
- -a Die Zahlen werden nur als Ascii-Zeichen ausgegeben.
-
- Beispiele:
-
- 1) Ausgabe von 123 (dezimal) in allen Zahlensystemen:
- num 123
-
- 2) Ausgabe von 123 (hex) in allen Zahlensystemen:
- num 0x123
-
- 3) Ausgabe von -123 (dezimal) in Hex:
- num -x "-123"
- und NICHT: num -x -123
-
- 4) Ausgabe der Konsolkonfigurationsbits durch Auslesen einer Systemadresse
- und Umformung ins Binärsystem:
- memex -sc 0x484 | xargs num -b
-
-
- -----
- overscan - OverScan ein- und ausschalten
-
- Syntax: overscan [+|-]
-
- Dieses Kommando dient zum Umschalten von OverScan und kann daher nur
- sinnvoll eingesetzt werden, wenn OverScan samt der zugehörigen Software
- installiert ist. Das Verwenden ohne OverScan ist allerdings trotzdem
- gefahrlos möglich.
- Wenn + angegeben ist, wird in den OverScan-Modus geschaltet. Wenn - ange-
- geben ist, wird in den Normalmodus geschaltet. Wenn kein OverScan installiert
- ist, ist diese Art des Aufrufes ohne Wirkung.
- Wenn kein Parameter angegeben ist, wird + oder - ausgegeben, je nachdem ob
- der OverScan- oder der Normalmodus aktiv ist. Wenn kein OverScan installiert
- ist, wird - ausgegeben.
-
- Beispiel:
- Während der Ausführung eines Programms soll auf Normalmodus geschaltet werden.
-
- # Modus speichern
- MODE=`overscan`
- # umschalten
- overscan -
- ............................ Aufruf des Programms
- # Modus wiederherstellen
- overscan $MODE
- unset MODE
-
- Der Rückgabewert ist 0, wenn der Normalmodus-, und 1, wenn der OverScan-Modus
- aktiv ist, und -1 bei einem Aufruffehler. Wenn + oder - angegeben ist, wird
- 1 oder 0 je nach der Einstellung vor der Umschaltung (also vor Aufruf des
- Kommandos) ausgegeben.
-
- -----
- pg, more - Dateien seitenweise ausgeben
-
- Syntax: pg|more {File}
-
- StdOut oder, falls angegeben, File wird in Seiten zu je $PAGELEN Zeilen
- ausgegeben. Nach jeder Seite kann der Anwender:
- mit der Leertaste die nächste Seite anzeigen,
- mit der Taste D die nächste halbe Seite anzeigen,
- mit der RETURN-Taste die nächste Zeile anzeigen,
- mit der Taste Q die Ausgabe abbrechen und mit der nächsten Datei
- fortfahren,
- mit der ESC-Taste das Kommando abbrechen, es werden keine weiteren
- Dateien mehr angezeigt.
-
- -----
- pmd - Post-Mortem-Dump
-
- Syntax: pmd
-
- Dieses Kommando kann verwendet werden, um Informationen über ein Programm zu
- erhalten, das von einer Exception durch Bomben beendet wurde. Es erzeugt eine
- Ausgabe, die die Inhalte der Register d0 bis d7 und a0 bis a6 sowie des
- usp (a7), ssp (a7") und des Programmzählers (pc) enthält. Außerdem wird die
- Nummer der die Bomben auslösenden Exception ausgegeben und die obersten sechs
- 16bit-Worte des Stacks, letztere sowohl in Hex- als auch in Ascii-Notation.
- Nicht-druckbare Zeichen (solche mit Ascii-Code<32) werden als dicke Punkte
- ausgegeben.
- Die Nummer der Exception wird dezimal, alle anderen Angaben hexadezimal an-
- gegeben. (Da die Nummer der Exception normalerweise kleiner als 10 ist,
- macht es keinen Unterschied, ob man sie dezimal oder hexadezimal ausgibt.)
-
- Wenn noch keine Exception aufgetreten ist, durch die Bomben hervorgerufen
- wurden, sind die Informationen ungültig. Es erscheint dann vor der Ausgabe
- die Meldung "WARNING: Information void".
-
- -----
- ps - Prozeßliste
-
- Syntax: ps [-bfc]
-
- WENN MINT INSTALLIERT IST:
- Es wird eine Liste der augenblicklich aktiven Prozesse erzeugt. Dabei handelt
- es sich um eine Ausgabe des Inhalts von Pseudo-Laufwerk X:.
- Die Ausgabe hat folgendes Format:
-
- 000 WEV 00:00:00 4096 mint
-
- Dabei ist:
- 000 Die Prozeßnummer.
- WEV Der Prozeßstatus. Siehe unten.
- 00:00:00 Die Laufzeit des Prozesses.
- 4096 Der Speicherbedarf des Prozesses in Bytes.
- mint Der Name des Prozesses.
-
- In diesem Fall wäre der Dateiname des Prozesses also X:\mint.000 .
- Folgende Statusangaben sind möglich:
- RUN Der Prozeß ist augenblicklich aktiv.
- RDY Der Prozeß ist inaktiv, aber bereit, aktiv zu werden.
- TRS Der Prozeß wurde beendet, ist aber noch resident.
- WEV Der Prozeß wartet auf ein Ereignis (z.B. auf das Ende eines
- Kindprozesses).
- WIO Der Prozeß wartet auf eine Ein/Ausgabe.
- ZOM Es ist ein Zombie-Prozeß.
- STP Der Prozeß wurde durch ein Signal beendet.
-
- Die ps übergebenen Parameter und Flags werden ignoriert.
-
-
- WENN MINT NICHT INSTALLIERT IST:
- Das Kommando ps erzeugt eine Liste der augenblicklich laufenden Programme
- (Prozesse). Anders als unter Unix, wo mehrere Prozesse gleichzeitig aktiv
- sein können, ist unter TOS nur jeweils ein Prozeß aktiv. Dieser kann ein
- anderes Programm starten und auf dessen Beendigung warten (mit der Be-
- triebssystem-Funktion Pexec). Das so gestartete Programm kann wiederum
- ein anderes starten usw. Mit ps wird die so erzeugte Reihe von Programmen
- ausgegeben.
- Nach Eingabe von ps erscheint eine Liste der Prozesse in der Reihenfolge
- des Aufrufs. Der augenblickliche Prozeß steht oben, der zuerst vom Desk-
- top gestartete Prozeß steht unten. Das Desktop selber erscheint nicht in
- der Liste.
-
- Flags:
- -b Zu jedem Prozeß wird die Adresse von dessen Basepage aus-
- gegeben.
- -f Wenn dieses Flag angegeben ist, erscheinen die vollen
- Pfadnamen, unter denen die Programme aufgerufen wurden.
- Wenn -f nicht angegeben ist, erscheint nur der reine
- Dateiname (Basisname).
- -c Zu jedem Prozeß wird dessen Kommandozeile ausgegeben.
- VORSICHT: arbeitet unzuverlässig, da bei Programmstart die
- DTA auf diesen Bereich zeigt. Programme, die die DTA nicht
- selber ändern, überschreiben bei jedem DTA-Zugriff diesen
- Bereich.
-
- Der Kern des ps-Kommandos, nämlich der Schritt von der Adresse der Basepage
- zum Aufrufpfad des zugehörigen Programms, stammt aus der Datei initargs.c
- aus der Library des Sozobon C-Systems.
-
- ACHTUNG: Die einzige Angabe, auf die man sich verlassen kann, ist die
- Adresse der Basepage. Da TOS den Aufrufpfad eines Programms nicht in
- der Basepage abspeichert, benutzt ps einen Trick: es holt mit Hilfe der
- Basepage-Adresse die gespeicherte Adresse des USP (User-Stack-Pointer) des
- jeweiligen Programms und bekommt über diese den ersten Parameter der zu-
- letzt aufgerufenen Funktion. Dies ist in jedem Fall Pexec, daher ist der
- erste Parameter der Pfadname des aufgerufenen Programms. (Dieser Trick stammt
- aus den Libraries von Sozobon C.) Das kann natürlich schiefgehen, man sollte
- sich also über nichts wundern.
- Teilweise werden die Aufrufpfade durch das Starten von externen Kommandos
- verändert. Beim Programmstart wird die Kommandozeile als DTA benutzt, wenn
- ein Programm also seine DTA nicht ändert, wird die Kommandozeile beim ersten
- Aufruf von Fsfirst überschrieben.
-
- Siehe auch: basep
-
- -----
- putscr - Bildschirminhalt wiederherstellen
-
- Syntax: putscr [-(f|s Dateiname)]
-
- Ein zuvor mit getscr gespeicherter Bildschirminhalt wird wiederhergestellt.
- Es ist möglich, einen einmal gespeicherten Bildschirm mehrmals zu restau-
- rieren.
-
- Flags:
- -f Der Speicherbereich wird freigegeben. Das Bild wird nicht
- wiederhergestellt.
- -s Der Speicherbereich wird in die angegebene Datei gespeichert.
- Wenn eine Datei mit dem angegebenen Namen bereits existiert,
- wird sie überschrieben.
-
- Beispiel:
- getscr - titel.doo
- putscr
- read
- cls
- putscr -f
- Mit dieser Befehlsfolge wird ein Doodle-Bild (32000
- Bytes) aus der Datei titel.doo geladen und angezeigt.
- Die Shell wartet auf einen Tastendruck, dann wird der
- Bildschirm gelöscht und der Speicherbereich wieder
- freigegeben.
- Mit dieser Befehlsfolge kann ein Shellscript, z.B.
- das Profile, eine Grafik als Titelbild ausgeben.
-
- getscr
- putscr -s shell.doo
- putscr -f
- Der aktuelle Bildschirminhalt wird im Doodle-Format
- in die Datei shell.doo gespeichert (Hardcopy).
-
-
- Siehe auch: getscr
- showpic (externes Kommando)
-
- -----
- pwd - Aktuelles Directory ermitteln
-
- Syntax: pwd [-a|{Drive}]
-
- Schreibt das aktuelle Verzeichnis der angegebenen Laufwerke oder, wenn
- kein Laufwerk angegeben ist, das aktuelle Verzeichnis des aktuellen
- Laufwerks nach StdOut. Wenn -a angegeben ist, werden die aktuellen Verzeich-
- nisse aller angeschlossenen Laufwerke ausgegeben.
- pwd ohne Laufwerksangabe entspricht "echo $CWD".
-
- Beispiele:
- pwd A: B: C: D: E: F: ist äquivalent zu
- pwd abcdef oder, wenn das alle Laufwerke sind, zu
- pwd -a
-
- -----
- raw - Ausgabe auf der "Raw Console"
-
- Syntax: raw [-bnc] {Datei}
-
- Als "Raw Console" oder RAWCON wird der Bildschirm ohne VT52-Emulator und
- Steuerzeicheninterpretation bezeichnet. Die Ausgabe eines CR-Zeichens nach
- RAWCON erzeugt also kein Zeilenende, sondern das "CR"-Schriftzeichen. Mit
- dem Kommando raw kann eine Datei (oder StdIn, wenn keine Datei angegeben
- ist) auf RAWCON ausgegeben werden. Am Ende der Datei wird jedoch ein
- Zeilenvorschub eingefügt, damit das nächste Prompt in einer neuen Zeile
- erscheint. Das kann mit dem Flag -c unterbunden werden.
-
- Flags: -b die Datei wird binär geöffnet, es findet also keine Über-
- setzung CR/LF -> LF statt.
- -n alle CR-Zeichen werden statt über RAWCON über den VT52-
- emulator ausgegeben, bewirken also tatsächliche Zeilen-
- vorschübe. Alle anderen Zeichen werden nicht übersetzt.
- -c die Ausgabe eines Zeilenvorschubs am Ende jeder Datei
- wird unterbunden.
-
- Beispiele:
-
- raw cmds2.o cmds3.o cmds4.o
- gibt die angegebenen Dateien auf RAWCON aus. An Ende jeder Datei wird ein
- Zeilenvorschub erzeugt.
-
- hd -b data.bin | raw -n
- Der Hexdump wird auf RAWCON ausgegeben. CR-Zeichen im Hexdump bewirken
- tatsächliche Zeilenvorschübe in der Ausgabe.
-
- Bemerkung:
- 1) Die Ausgabe erfolgt mit der Bios-Funktion Bconout.
- 2) Dieses Kommando erzeugt keine Ausgabe nach StdOut, kann also nicht
- umgeleitet werden.
-
- -----
- rdti - Konfiguration der Shell mittels desktop.inf
-
- Syntax: rdti [-dclxv] [Datei]
-
- Mit diesem Kommando ist es möglich, einige Konfigurationen der Shell direkt
- aus der desktop.inf-Datei zu lesen, die vom Desktop beim Systemstart be-
- nutzt wird. Diese Informationen sind:
- aktuelles Directory,
- Bezeichnungen der Laufwerke,
- Extender für ausführbare Programme.
- Jede dieser Eigenschaften läßt sich mit einem der Flags ausblenden, so
- daß man sich beim Aufruf von rdti die gewünschten Konfigurationen ein-
- stellen kann. Wenn keine Flags angegeben sind, werden alle diese Ini-
- tialisierungen durchgeführt.
- Wenn keine Datei angegeben ist, wird die Datei /desktop.inf auf dem
- Bootlaufwerk benutzt. Es kann nur eine Datei angegeben werden, Wildcards
- sind nicht erlaubt, der Aufruf "rdti c:/desk*.inf" ist also unzulässig.
-
- Flags:
- -d Wenn dieses Flag nicht angegeben ist, wird das Directory
- von jedem geöffneten Fenster ausgegeben.
- -c Wenn dieses Flag nicht angegeben ist, wird ein cd in
- das Directory von jedem geöffneten Fenster ausgeführt.
- Auf diese Weise kann man das aktuelle Directory auf das
- des obersten Fensters einstellen.
- -l Wenn dieses Flag nicht angegeben ist, liest die Shell die
- Bezeichnungen der Laufwerke (die im Desktop unter den
- Laufwerk-Icons stehen). Diese Bezeichnungen werden z.B.
- von den internen Kommandos drive und df benutzt. Die
- alten Einstellungen der Bezeichnungen gehen dabei ver-
- loren.
- -x Wenn dieses Flag nicht angegeben ist, initialisiert die
- Shell die Variable XEXT anhand der Extender, die in der
- Datei als Extender von ausführbaren Programmen (egal ob
- GEM, TOS oder TTP) eingetragen sind. Der alte Inhalt von
- XEXT geht dabei verloren, es sei denn, in der Datei sind
- keine Extender definiert.
- -v Wenn dieses Flag angegeben ist, gibt rdti Informationen
- über den Dateinamen sowie die durchgeführten Konfigura-
- tionen aus.
-
- Siehe auch: drive
-
- -----
- read - Variablen einlesen
-
- Syntax: read [[-] Var]
-
- Eine Zeile wird von StdIn gelesen und, falls vorhanden, in der Variablen
- Var abgelegt. Falls eine Variable mit Namen Var bereits existiert, so wird
- der alte Wert überschrieben.
- Wenn das Flag - angegeben ist, werden in der Eingabe Steuersequenzen und
- Shellvariablen expandiert.
-
- Beispiele:
- 1) Einlesen einer Benutzereingabe:
- echo Bitte geben Sie Ihren Namen ein
- read NAME
- echo Der Name ist $NAME
-
- 2) Einlesen der Anzahl der freien RAM-Bytes in eine Variable:
- mem | read RAM
- echo Es sind $RAM Bytes frei
- (ist analog zu "RAM=`mem`")
-
- 3) Warten auf Druck auf ENTER
- echo Bitte ENTER drücken
- read
-
- 4) Benutzung des Flags "-":
- read x
- $PATH <------------- Eingabe
- speichert die Zeichenkette "$PATH" in der Variablen x.
- read - x
- $PATH <------------- Eingabe
- speichert den Wert der Shellvariablen PATH in der Variablen x.
-
- -----
- readonly - Variablen schreibschützen
-
- Syntax: readonly [[-] {Variable}]
-
- Schreibgeschützte Variablen können nicht gelöscht und ihre Werte können
- nicht verändert werden. Mit dem readonly-Kommando kann das Schreibschutz-
- Flag von Variablen gesetzt und gelöscht werden.
- Wenn readonly ohne Parameter aufgerufen wird, wird eine Liste aller schreib-
- geschützter Variablen ausgegeben.
- Ansonsten wird das Schreibschutz-Flag bei allen angegebenen Variablen ge-
- setzt oder, wenn - angegeben ist, gelöscht.
- Die Namen der Variablen können dabei im Format der erweiterten Wildcards
- angegeben werden, z.B. "readonly a*" betrifft alle Variablen, deren Name
- mit a beginnt. Näheres siehe okami.doc.
- Es können nur Variablen schreibgeschützt werden, die vom Benutzer angelegt
- oder verändert worden sind, also den Status "USR" haben (siehe "vars").
- Um Variablen schreibzuschützen, die von der Shell selber angelegt wurden,
- z.B. PIPDIR, hilft folgender Trick:
- PIPDIR=$PIPDIR
- readonly PIPDIR
- Durch die Zuweisung wird der Wert der Variablen nicht verändert, die
- Variable erhält aber den USR-Status.
-
- Beispiele:
- readonly
- erzeugt eine Liste aller schreibgeschützter
- Variablen.
- readonly VAR1 VAR2 KEY
- die Variablen VAR1, VAR2 und KEY werden
- schreibgeschützt.
- readonly - VAR1 KEY
- der Schreibschutz der Variablen VAR1 und
- KEY wird entfernt.
- readonly *E*
- alle Variablen, deren Name ein E enthält,
- werden schreibgeschützt.
-
- Siehe auch: export
- vars
-
- -----
- rm - Dateien löschen
-
- Syntax: rm [-friqv] File {File}
-
- Alle Dateien, die einem der Muster File entsprechen, werden gelöscht.
-
- Flags: -f Es werden keine Fehlermeldungen bzgl. fehlenden Dateien
- ausgegeben. Außerdem werden auch Dateien, bei denen das
- Read Only-Flag gesetzt ist, gelöscht.
- -i Vor dem Löschen werden die Namen aller Dateien angezeigt,
- und der Anwender wird gefragt, ob er diese löschen will
- oder nicht. Als Ja gelten die Eingabe eines Wortes, das
- mit y oder Y beginnt, sowie ein Druck auf ENTER ohne Eingabe.
- Als Nein gilt jede andere Eingabe.
- -q Es wird interaktiv gelöscht, d.h. der Anwender wird bei
- jeder Datei gefragt, ob er diese löschen will oder nicht.
- -r Es wird rekursiv gelöscht, d.h. wenn Ordner angegeben sind,
- so werden die Ordner mitsamt allen enthaltenen Dateien und
- Unterordnern gelöscht. Wenn das Flag -f nicht gesetzt ist,
- erfolgt bei allen schreibgeschützten Dateien eine Nachfrage.
- Das Flag -q ist ohne Wirkung!
- -v Die Namen der gelöschten Dateien werden auf dem Bildschirm
- ausgegeben.
-
- Achtung: Ordner können mit diesem Kommando nur gelöscht werden, wenn das
- Flag -r angegeben ist. Das normale Kommando zum Löschen von Ordnern ist
- rmdir.
-
- Beispiele:
-
- rm xyz.bak
- Löschen einer Datei.
- rm *.bak
- Löschen aller .bak-Dateien.
- rm -f *.bak *.dup *.out
- Löscht auch schreibgeschützte Dateien.
- rm -rf /*
- Löscht ohne Nachfrage alles!
- rm -rfv /tmp
- Löscht den Ordner /tmp mit allen enthaltenen Dateien
- und Unterordnern. Die Namen der gelöschten Dateien
- werden auf dem Bildschirm ausgegeben.
-
- Rückgabewert:
- -1 Aufruffehler
- sonst Anzahl der gelöschten Dateien (und Ordner bei -r).
-
- Siehe auch: rmdir
-
- -----
- rmdir - Leere Ordner löschen
-
- Syntax: rmdir Path {Path}
-
- Die angegebenen Ordner werden gelöscht. Es dürfen keine Dateien oder Unter-
- ordner in Path enthalten sein. Um einen Ordner mitsamt seinem Inhalt zu
- löschen, gibt es das Kommando rm -r.
-
- Rückgabewert: Anzahl der gelöschten Ordner.
-
- Siehe auch: rm
-
- -----
- rpn - SIEHE upn
-
- -----
- rsconf - Konfiguration der RS232-Schnittstelle
-
- Syntax: rsconf [-s(Speed] [(+|-)x] [(+|-)r] [-p(0|1|2)] [-b(Bits)] [-w(Word)]
-
- Die serielle Schnittstelle (Modemport) wird konfiguriert. Die Parameter
- haben folgende Bedeutung:
-
- -s Übertragungsgeschwindigkeit. Mögliche Werte für Speed sind:
- 19200, 9600,4800,3600,2400,2000,1800,1200,600,300,200,
- 150,134,110,75,50 (alles in baud). Der Defaultwert ist 9600.
- -x XON/XOFF wird abgeschaltet (Default).
- +x XON/XOFF wird eingeschaltet.
- -r RTS/CTS wird abgeschaltet (Default).
- +r RTS/CTS wird eingeschaltet.
- -p Parität. Mögliche Angaben sind:
- 0 (keine Parität), 1 (ungerade), 2 (gerade). Der Default-
- wert ist 0.
- -b Anzahl der Start- und Stopbits. Mögliche Angaben:
- Bits Startbits Stopbits Übertragung
- 0 0 0 Synchron (Default)
- 1 1 1 Async.
- 1.5 1 1.5 Async.
- 2 1 2 Async.
- -w Wortlänge. Mögliche Angaben für Word sind:
- 8,7,6,5 (in bits). Der Defaultwert ist 8.
-
- Beispiele:
- rsconf
- stellt ein: 9600 baud, kein XON/XOFF, kein RTS/CTS, keine
- Parität, 0 Start- und Stopbits, Wortlänge 8 bit.
- rsconf -s4800
- wie oben, nur mit 4800 baud.
- rsconf -s19600 +x +r -p1 -b2 -w7
- stellt ein: 19600 baud, XON/XOFF, RTS/CTS, ungerade Pari-
- tät, 1 Startbit, 2 Stopbits, Wortlänge 7 bit.
-
- -----
- scr - Bildschirmfarbe einstellen
-
- Syntax: scr [-bwlhg]
-
- Einstellen von Hinter- und Vordergrundfarbe sowie der Anzahl der Zeilen auf
- dem Bildschirm (nur in hoher Auflösung sinnvoll).
- Flags: -b (black) Einstellen von dunklem Hinter- und hellem Vorder-
- grund.
- -w (white) Einstellen von hellem Hinter- und dunklem Vorder-
- grund.
- -g (gray) Der Bildschirm wird mit dem grauen Desktop-Hinter-
- grundmuster gefüllt. Das ist sinnvoll vor dem Starten
- von Gem-Programmen, z.B. in der Gemexec-Funktion.
- -l (low) Einstellen von 24 Zeilen (normale Schrift).
- -h (high) Einstellen von 48 Zeilen (kleine Schrift).
-
- Für die Einstellung der Zeilenanzahl mit -l und -h gilt:
-
- 1) gon muß aktiv sein.
- 2) Nach der Einstellung wird der Bildschirm gelöscht.
- 3) Die neue Zeilenanzahl wird in der Shellvariablen COLUMNS abgelegt.
- 4) Die Einstellung beruht auf einer undokumentierten VDI-Funktion, zu
- der das Profi-Buch sagt: "Verwendung auf eigene Gefahr". Abstürze sind
- möglich.
-
- Wenn Overscan aktiv ist, gon aber nicht, dann kann der Bildschirm mit
- -g nicht grau gefärbt werden. In diesem Fall wird er bei -g nur gelöscht.
- Das ist ein Grund mehr, gon als eins der ersten Kommandos im profile
- auszuführen.
-
- Siehe auch: cursor
- gemexec
- keyb
- mouse
- overscan
-
- -----
- set - Shell-Flags einstellen
-
- Syntax: set [-|([+Flags] [-Flags])]
-
- Es wird ein Shell-Flag gesetzt oder gelöscht, oder es wird der Status
- aller Shell-Flags ausgegeben.
- Bei der Verwendung ohne Parameter wird der Status aller Shell-Flags
- mit einer kurzen Erklärung des jeweiligen Flags ausgegeben.
- Bei der Verwendung mit dem Parameter - wird der Status aller Shell-Flags
- in einer Form ausgegeben, die später als Parameter für set benutzt werden
- kann. Dies ist nützlich, wenn in einem Shellscript ein Flag lokal geändert
- werden soll:
- A=`set -`
- set +x
- ................... (irgendwelche Kommandos)
- set $A
- unset A
- Der Status der Flags wird in die Variable a eingelesen. Diese Variable wird
- später benutzt, um die Änderung (set +x) ggfs. rückgängig zu machen.
-
- Bei der Verwendung mit einem anderen Parameter als einem einzelnen Minus-
- zeichen wird das entsprechende Flag gesetzt (+) oder zurückgesetzt (-).
- Beispiel: set +x setzt das Flag x.
- set -x löscht das Flag x.
-
- Eine Liste der zu verwendenden Flags gibt es unter dem Stichwort
- "shellflags" in dieser Datei.
-
- -----
- shellflags - Flags, die mit dem set-Kommando eingestellt werden können
-
- Die folgenden Flags können benutzt werden:
-
- b Wenn dieses Flag gesetzt ist, wird in einer Eingabezeile
- jeder Slash (/) in einen Backslash (\) umgeformt. Dadurch
- ist es möglich, Pfadnamen wie in Unix üblich mit Slashes
- zu trennen (was einfacher ist, da man auf dem ST für einen
- Slash zwei, für einen Backslash aber drei Tasten gleich-
- zeitig drücken muß). Wenn das Flag nicht gesetzt ist, werden
- keine Slashes in Backslashes umgeformt.
- Die Umformung betrifft sämtliche Eingaben, also auch Zu-
- weisungen an Variablen, Zeilen aus Shellscripts etc.
- Nach dem Start der Shell ist dieses Flag gesetzt.
-
- l Wenn dieses Flag gesetzt ist, werden Dateinamen in
- Kleinbuchstaben ausgegeben. Wenn das Flag nicht gesetzt ist,
- werden Dateinamen so ausgegeben, wie sie auf der Diskette
- gespeichert sind (in Großbuchstaben).
- Dieses Flag beeinflußt nicht die Möglichkeit, Dateinamen
- in Kleinbuchstaben einzugeben.
- Nach dem Start der Shell ist dieses Flag gesetzt.
-
- s Wenn dieses Flag gesetzt ist, schreibt die Shell nach dem
- Programmende durch Eingabe von exit oder shutdown oder
- durch Druck auf Ctrl V das aktuelle Directory ($CWD) in
- die Datei $HOME\wdir. Die Datei wird unsichtbar gemacht.
- Wenn das Profile ($HOME\profile) folgende Zeilen enthält:
- set +s
- read a < $HOME\wdir
- cd $a
- dann wird die Shell nach jedem Aufruf auf das Directory
- eingestellt, in dem sie zuletzt verlassen wurde. Dies ist
- sehr sinnvoll beim Einsatz einer Festplatte.
- Nach dem Start der Shell ist dieses Flag nicht gesetzt.
-
- x Vor dem Ausführen einer Binärdatei (PRG, TOS etc.) wird
- das aktuelle Verzeichnis auf das Verzeichnis umgestellt,
- in dem sich die Datei befindet. Nach der Ausführung der
- Datei wird das aktuelle Verzeichnis wieder zurückgesetzt.
- Nach dem Start der Shell ist dieses Flag nicht gesetzt.
-
- c Vor dem Ausführen eines Shellscripts wird das aktuelle
- Verzeichnis auf das Verzeichnis umgestellt, in dem sich
- das Shellscript befindet. Nach dem Ende des Scripts wird
- das aktuelle Verzeichnis wieder zurückgesetzt.
- Nach dem Start der Shell ist dieses Flag nicht gesetzt.
-
- h Wenn dieses Flag gesetzt ist, wird die Datei, aus der bei
- Druck auf Help die Hilfstexte zu den einzelnen Kommandos
- gelesen werden (i.d.R. diese Datei, commands.doc), resident
- im Speicher gehalten. Wenn das Flag nicht gesetzt ist, wird
- die Datei bei jedem Druck auf Help neu geladen. Nach dem
- Start der Shell ist dieses Flag gesetzt, und der einzige
- Grund, es zu löschen, ist Speicherplatzmangel. Um ein resi-
- dentes Helpfile aus dem Speicher zu entfernen, dieses Flag
- löschen (set -h), ein beliebiges Kommando eingeben und Help
- drücken.
- Nach dem Start der Shell ist dieses Flag gesetzt.
-
- H Wenn dieses Flag gesetzt ist, speichert die Shell nach dem
- Laden der Hilfsdatei (siehe h) den Dateiindex in einer
- seperaten Datei bzw. liest den Index aus dieser Datei. Wenn
- dieses Flag nicht gesetzt ist, wird der Index immer im Speicher
- neu erstellt. Siehe auch okami.doc zum Thema Tastatureingabe
- und Help-Taste.
- Nach dem Start der Shell ist dieses Flag gesetzt.
-
- u Wenn dieses Flag gesetzt ist, werden die Standard-Streams,
- also die Dateien, die für die Ein-Ausgabe-Umleitung und
- das Pipelining benutzt werden, im Binärmodus geöffnet. Das
- bedeutet, daß in der Ein- und Ausgabe über diese Dateien
- die Übersetzung zwischen CR/LR und CR abgeschaltet wird.
- Nach dem Start der Shell ist dieses Flag nicht gesetzt.
-
- w Wenn dieses Flag gesetzt ist, interpretiert die Shell die
- erweiterten Wildcards * und []. Wenn das Flag nicht gesetzt
- ist, werden alle Wildcards wie unter TOS behandelt. Dies be-
- trifft nur die Angabe von Dateinamen, nicht die sonstige Ver-
- wendung der erweiterten Wildcards z.B. bei Verwendung der
- Help-Taste.
- Nach dem Start der Shell ist dieses Flag gesetzt.
-
- p Wenn dieses Flag gesetzt ist, wird beim Start von Binärpro-
- grammen diesen die Ein/Ausgabeumleitung in der Kommandozeile
- übergeben, und zwar in der Form "<Eingabedatei >Ausgabedatei".
- Vorher wird die Umleitung auf Gemdos-Basis rückgängig gemacht.
- Wenn das Flag nicht gesetzt ist, wird die Ein/Ausgabe aus-
- schließlich mit der Gemdos-Funktion Fforce umgeleitet, den
- Binärprogrammen wird also kein Dateiname übergeben. Dies ist
- die Normaleinstellung, die nur in extremen Sonderfällen ge-
- ändert werden sollte.
- Nach dem Start der Shell ist dieses Flag nicht gesetzt.
-
- a Wenn dieses Flag gesetzt ist, werden jedem von der Shell ge-
- starteten Programm die übergebenen Parameter und der Programm-
- name nach dem xArg-Protokoll übergeben.
- Nach dem Start der Shell ist dieses Flag gesetzt.
-
- f Wenn dieses Flag gesetzt ist, wird, wenn in der Tastaturein-
- gabe Dateinamen-Vervollständigung mit Pfeil links oder ESC
- ausgeführt wird, an den eingegebenen Dateinamen ein `*' an-
- gehängt, wodurch dieser als Präfix für die auszuwählenden
- Dateien wirkt.
- Nach dem Start der Shell ist dieses Flag nicht gesetzt.
-
- e Wenn dieses Flag gesetzt ist, werden alle geänderten oder neu
- angelegten Shellvariablen automatisch ins Environment ex-
- portiert (siehe `export').
- Nach dem Start der Shell ist dieses Flag nicht gesetzt.
-
- L Wenn dieses Flag gesetzt ist, werden Kommandos mit dem
- Zeileneditor der Shell eingelesen. Wenn dieses Flag gelöscht
- ist, werden Kommandos von der Standardeingabe gelesen und
- können somit aus einer Datei, Pipe oder Schnittstelle kommen,
- womit der Zeileneditor nicht fertigwird.
- Daher muß, wenn die Shell zwar von der Standardeingabe lesen,
- aber nicht interaktiv sein soll (z.B. wenn sie Kommandos von
- einer Schnitttelle ausführen soll), beim Aufruf der Shell
- `-L' angegeben werden.
- Achtung: wenn L nicht gesetzt ist, kann die Shell nicht durch
- Druck auf Ctrl-D, sondern nur mit Ctrl-Z oder durch Eingabe
- von "exit" beendet werden.
- Nach dem Start der Shell ist dieses Flag gesetzt.
-
- S Wenn dieses Flag gesetzt ist, benutzt die Shell eine Signal-
- verarbeitung, um Abstürze bei internen Kommandos u.ä. abzu-
- fangen. Eine Eingabe wie "memex 123" bringt, wenn S nicht
- gesetzt ist, die Shell (selbstverständlicherweise) zum
- Absturz. Wenn das S-Flag gesetzt ist, werden solche Fälle
- abgefangen, es erscheint dann "Killed", und es erscheint
- wieder das Shell-Prompt.
- Der Nachteil davon ist, daß die Signalverarbeitung u.U.
- mit anderen residenten Programmen, die Exceptions-Vektoren
- verbiegen, kollidieren kann.
- ACHTUNG: Dieses Flag darf nur beim Start der Shell über
- einen Übergabeparameter gesetzt werden und NICHT mit dem
- regulären set-Kommando, weder im Profile noch sonstwie.
- Die Ergebnisse sind sonst undefiniert (d.h. es ist nicht
- vorhersehbar, ob und wann die betreffenden Vektoren umge-
- bogen oder wiederhergestellt werden).
- Nach dem Start der Shell ist dieses Flag gesetzt.
-
- -----
- shutdown - Abschalten oder Neubooten
-
- Syntax: shutdown [-rRtfv]
-
- Wenn eins der Flags -r und -R angegeben ist, wird nach einer Sicherheits-
- abfrage ein Warmstart (bei -r) oder Kaltstart (bei -R) durchgeführt.
-
- Wenn keins der Flags -r und -R angegeben ist, wird der Rechner bereit zum
- Abschalten gemacht. Nach einer Sicherheitsabfrage werden alle Streams ge-
- schlossen sowie Maus und Cursor abgeschaltet.
- Wenn die Datei $HOME\bin\ship.exe vorhanden ist, wird sie geladen und
- ausgeführt (als Binärprogramm). Festplattenbenutzer sollten hierhin
- das SHIP.PRG der Harddisk-Utility-Diskette kopieren. Damit wird auch die
- Festplatte zum Abschalten bereit gemacht.
- Laut Handbuch der Atari-Festplatte kann diese zwar jederzeit abgeschaltet
- werden, und SHIP.PRG braucht nur vor einem Transport gestartet zu werden.
- Trotzdem ist es sinnvoll, die Platte vor jedem Abschalten zu parken, da
- ansonsten der Schreib-Lesekopf wie ein Damoklesschwert über den empfind-
- lichen Daten hängt.
- Wenn weitere Aktionen beim Shutdown erwünscht sind, kann man ein Programm
- schreiben, das diese Aktionen ausführt, und dieses nach $HOME\bin\ship.exe
- kopieren. Dieses Programm kann das Harddisk-Ship-Programm dann per Pexec
- aufrufen.
- Danach wird die Meldung "...shutdown completed..." ausgegeben, und das
- System läuft in eine Endlosschleife, die nur durch einen Reset verlassen
- werden kann.
-
- Wenn beim Laden und Starten von ship.exe ein Fehler auftritt, wird shutdown
- abgebrochen (außer wenn -f angegeben ist). Wenn ship.exe nicht gefunden wird,
- erscheint eine Warnung, aber shutdown wird nicht abgebrochen.
-
- Flags:
- -r Warmstart. Die Festplatte wird nicht geparkt, das Programm
- $HOME\bin\ship.exe wird nicht ausgeführt.
- -R Wie -r, aber Kaltstart.
- -t Wenn dieses Flag angegeben ist, wird vor dem Shutdown bzw.
- Reset das mit trap definierte Kommando ausgeführt.
- -f Es erfolgt keine Sicherheitsabfrage. Wenn beim Laden und
- Starten von ship.exe ein Fehler auftritt, wird shutdown
- nicht abgebrochen.
- -v Vor jeder Aktion wird eine entsprechende Meldung auf den
- Bildschirm geschrieben. Ist ohne Wirkung bei -r und -R,
- da es hier keine Aktionen gibt, zu denen sich irgendwelche
- Meldungen lohnen würden, außerdem hätte man nicht viel
- Zeit, die Meldungen zu lesen.
-
- Siehe auch: trap
-
- -----
- sleep - eine Weile warten
-
- Syntax: sleep [-sm] n
-
- Dieses Kommando legt eine Pause von n Sekunden ein.
- Wenn gon aktiv ist, wird zum Warten die AES-Funktion evnt_timer aufgerufen,
- wodurch in der Wartezeit die Multitasking-Accessories zum Zuge kommen. Der
- Nachteil ist, daß hier die Wartezeit nicht allzu genau ist; bei aktivem
- gon ergab "time sleep 1" Zeiten zwischen 0.2 und 1.1 Sekunden.
- Wenn gon nicht aktiv ist, wird zum Warten eine Warteschleife benutzt, die
- den 200-Hz-Systemtimer abfragt. Hierbei kommt "time sleep 1" konstant auf
- 1.01 Sekunden.
-
- Flag: -s Es wird n Timer-Zyklen zu je 1/200 Sekunden gewartet.
- "sleep 1" ist also äquivalent zu "sleep -s 200". Es wird
- in einer Warteschleife gewartet, auch wenn gon aktiv ist.
- -m Es wird n Millisekunden gewartet. "sleep 1" ist also auch
- äquivalent zu "sleep -m 1000". Dieses Flag hat nur Sinn,
- wenn gon aktiv ist, ansonsten wird nicht n Millisekunden,
- sondern n/5 Timer-Zyklen zu je 1/200 Sekunden gewartet.
-
- -----
- sort - Sortieren
-
- Syntax: sort [-lnrs]
-
- Das sort-Kommando ist ein Filter, d.h. es liest seine Standard-Eingabe
- (StdIn), macht etwas damit und schreibt das Ergebnis zur Standard-Aus-
- gabe (StdOut).
- sort liest Zeilen von StdIn und gibt sie in sortierter Reihenfolge wieder
- aus. Die Maximalanzahl der Zeilen ist 500. (Wer mehr braucht, kann dafür
- den Software-Support benutzen. Die tatsächliche Anzahl der Zeilen einer
- Shellversion kann mit "ver -l" ermittelt werden.)
-
- Flags:
- -l Es wird nach der Länge der Zeilen sortiert, die kürzeste
- Zeile kommt zuerst.
- -n Es wird numerisch sortiert. Die Eingabezeilen werden als
- Zahlenangaben betrachtet (die mit %, 0 und 0x beginnen
- dürfen, um binäre, oktale oder hexadezimale Zahlen zu
- kennzeichnen) und in aufsteigender Reihenfolge sortiert,
- d.h. die kleinste Zahl kommt zuerst.
- -r Die Sortierreihenfolge wird umgekehrt.
- -s Die Strings werden nicht verkürzt. Wenn dieses Flag nicht
- angegeben ist, werden führende und endende Leer- und
- Tabulatorzeichen entfernt. Dies ist notwendig, wenn z.B
- mit "ls | sort -l" eine Dateiliste nach der Länge der
- Dateinamen sortiert werden soll, da in der Ausgabe des
- ls-Kommandos alle Dateinamen mit Leerzeichen auf 14 Zeichen
- Länge gebracht werden.
-
- Wenn keins der Flags l und n angegeben ist, wird nach lexikographischer
- Reihenfolge sortiert (mit der strcmp-Funktion, alle Kleinbuchstaben kommen
- daher nach allen Großbuchstaben).
- Zum Sortieren wird der Quicksort-Algorithmus benutzt.
-
- -----
- split - eine Datei ein kleine Stücke aufteilen
-
- Syntax: split [-bvf] {[-Num] Datei}
-
- Jede der angegebenen Dateien wird in Stücke von maximal Num Zeilen (mit je
- max. 80 Zeichen) aufgeteilt. Der Defaultwert für n ist 80. Die erzeugten
- Teildateien haben denselben Namen wie die Quelldatei, wobei Extender von
- 000 bis maximal 999 erzeugt werden. Wenn mehr als 999 Teilstücke notwendig
- werden, wird der Rest der Datei in die Datei mit dem Extender .999 ge-
- schrieben.
- Wenn die Teildateien bereits existieren, erfolgt eine Sicherheitsnachfrage.
- Wird diese mit Nein beantwortet, nimmt split die nächste Datei usf., bis
- eine Datei gefunden ist, die nicht existiert oder zu der der Anwender sein
- Einverständnis zum Überschreiben gibt.
-
- Flags:
- -b Die Datei wird in Stücke zu je max. Num Bytes aufgeteilt.
- Diese Option ist notwendig, um Binärdateien zu zerteilen.
- -f Es erfolgt keine Nachfrage bei schon existierenden Dateien,
- diese werden überschrieben.
- -v Es wird der Name jeder erzeugten Datei auf dem Bildschirm
- ausgegeben.
-
- Beispiel:
- split -100 commands.doc
- teilt die angegebene Datei in Stücke zu je 100 Zeilen auf.
- Die erzeugten Dateien haben die Namen commands.000,
- commands.001 usw.
- split -10 f1.txt -20 f2.txt -30 f3.txt
- teilt f1.txt in Teile zu 10, f2.txt in Teile zu 20 und
- f3.txt in Teile zu 30 Zeilen auf.
- split long.doc
- teilt long.doc in Teile zu 80 Zeilen auf.
- split -bv -700000 part_c.lzh
- Aufteilen einer langen Archivdatei in Stücke, die auf
- eine Diskette passen. Die Namen der erzeugten Dateien
- werden auf dem Bildschirm ausgegeben.
-
- Achtung: dieses Kommando sollte nur dann auf Binärdateien angewandt werden,
- wenn das Flag -b benutzt wird.
-
- -----
- te - Terminal-Emulator
-
- Syntax: te [-dk] [Dev {file | :string}]
-
- Dies ist ein sehr einfacher und primitiver Terminal-Emulator. Er kann Daten
- an eine beliebige Schnittstelle (RS232, Drucker, Midi) schicken und von dort
- einlesen sowie Dateien über die Schnittstelle ausgeben. Seine Fähigkeiten
- reichen allerdings aus zur Kommunikation mit einem Modem oder zum Ein-
- loggen in eine Mailbox. Durch die Möglichkeit, während einer Mailbox-
- sitzung te zu verlassen und andere Shell-Kommandos einzugeben, lassen
- sich Up- und Downloads realisieren.
- Mit Dev wird die zu benutzende Schnittstelle angegeben. Mögliche Werte sind:
-
- 0 paralelle Schnittstelle (Drucker)
- 1 serielle Schnittstelle (Modem) (default)
- 2 Konsole (keine gute Idee)
- 3 Midi-Schnittstelle
- 4 Tastatur (eine sehr schlechte Idee)
-
- Die Voreinstellung ist 1 (serielle Schnittstelle).
- Wenn keine Dateien angegeben sind, arbeitet te im Dialogmodus, d.h. es werden
- Daten von der Tastatur eingelesen und über die Schnittstelle geschickt sowie
- Daten von der Schnittstelle eingelesen und auf StdOut ausgegeben. Beendet wird
- te durch einen Druck auf UNDO.
- Wenn Dateinamen angegeben sind, werden alle diese Dateien über die Schnitt-
- stelle geschickt. Eingaben von der Schnittstelle werden ignoriert. Achtung:
- in diesem Fall muß als erstes die Schnittstellennummer (Dev) angegeben sein.
- Anstelle von Dateinamen können auch Strings angegeben werden, die direkt auf
- die Schnittstelle geschickt werden. Diese Strings müssen mit einem Doppel-
- punkt (:) eingeleitet werden. Der Doppelpunkt selber wird nicht mitgeschickt.
- Achtung: te fügt am Ende des Strings kein Newline-Zeichen ein!
- Wenn der String Leerzeichen enthält, muß er in Anführungszeichen gesetzt
- werden.
-
- Flag: -d Wenn dieses Flag angegeben ist, werden alle im Dialogmodus
- von der Schnittstelle eingelesenen Zeichen wieder an selbige
- zurückgeschickt. Das ist nützlich zum Testen von Schnitt-
- stellenverbindungen.
- -k Wenn dieses Flag angegeben ist, werden im Dialogmodus alle
- Tastatureingaben auf dem Bildschirm ausgegeben. Das ist
- nur dann notwendig, wenn das an der Schnittstelle ange-
- schlossene Gerät das nicht selber macht.
-
- Beispiele:
- te
- arbeitet im Dialogmodus.
-
- te 3
- ebenso, aber über die Midi-Schnittstelle.
-
- te 1 file.txt xyz.abc
- schickt die Dateien file.txt und xyz.abc an die serielle
- Schnittstelle.
-
- te >aux.in
- empfängt Daten von der seriellen Schnittstelle und schreibt
- diese in die datei aux.in, solange bis die UNDO-Taste gedrückt
- wird.
-
- te 1 :"ATD1234^n"
- schickt eine Steuersequenz zum automatischen Wählen der
- Telefonnummer an das an der seriellen Schnittstelle ange-
- schlossene Modem.
-
- Siehe auch: dial
- ts
-
- -----
- tee - T-Kreuzung der Eingabe
-
- Syntax: tee File
-
- StdIn wird nach StdOut und nach File kopiert.
-
- -----
- test - logische Ausdrücke auswerten
-
- Syntax: test Ausdruck
- oder [ Ausdruck ]
-
- Das test-Kommando wird normalerweise in Verbindung mit if oder while benutzt.
- Der Rückgabewert ist 1, wenn der Ausdruck wahr ist, und 0 sonst. test er-
- zeugt keine Ausgabe.
- Der Ausdruck kann eins der folgenden Formate haben:
-
- Dateioperationen:
- -f file Wahr, wenn file existiert.
- -x file Wahr, wenn file ausführbar ist.
- -d file Wahr, wenn file ein Directory ist.
- -g file Wahr, wenn file ein GEM-Programm ist ($GEXT).
- Variablenoperationen:
- +v var Wahr, wenn var der Name einer gesetzten Shellvariablen ist.
- -v var Wahr, wenn es keine Shellvariable namens var gibt.
- Stringoperationen:
- a = b Wahr, wenn die Strings a und b gleich sind.
- a != b Wahr, wenn die Strings a und b ungleich sind.
- a -t b Wahr, wenn das Kommando a auf eine der Typen b ausgeführt
- werden kann. Mögliche Typen sind:
- f Shellfunktion
- i internes Kommando
- s Shellscript
- b Binärprogramm
- n Kommando nicht gefunden
- Es können beliebig viele dieser Typen angegeben werden.
-
- Die folgenden numerischen Operationen vergleichen zwei
- Zahlen x und y:
- x -eq y x = y
- x -ne y x != y
- x -lt y x < y
- x -gt y x > y
- x -le y x <= y
- x -ge y x >= y
-
- Achtung: bei -v und +v muß der Name einer Variablen angegeben werden und
- nicht der Inhalt, also z.B. "test +v TERM" und nicht "test +v $TERM".
-
- Beispiele: siehe if.
-
- -----
- then - SIEHE if
-
- -----
- time - Stoppuhr für Programme
-
- Syntax: time Kommando {Parameter}
-
- Führt das Kommando mit den angegebenen Parametern aus und schreibt die
- Laufzeit in Minuten, Sekunden und 1/100 Sekunden auf den Bildschirm.
- Das Ermitteln der Zeit geschieht mittels des 200 Hz-Systemtimers.
-
- -----
- touch - Dateien erneuern oder anlegen
-
- Syntax: touch File {File}
-
- Wenn File bereits existiert, werden Datei-Datum und -Zeit auf die aktuelle
- Systemzeit gesetzt. Wenn File noch nicht existiert, wird eine Datei mit
- dem Namen File angelegt.
-
- Rückgabewert:
- -1 Aufruffehler
- 1 Die Datei ist erzeugt worden.
- 0 Das Dateidatum einer existierenden Datei wurde geändert.
- Hierbei bezieht sich der Wert auf die letzte behandelte Datei.
-
- -----
- tr - Filter
-
- Syntax: tr Filter
-
- Filtert StdIn nach StdOut, abhaengig von den Angaben in Filter.
- Jede Zeile in der Datei Filter (bis auf Leerzeilen oder Zeilen, die mit
- # (Doppelkreuz) anfangen), bestimmt ein Zeichen. Die Zeilen haben den
- Aufbau
-
- s d
-
- wobei s und d in dezimaler, hexadezimaler, oktaler oder Ascii-Schreibweise
- angegebene Werte zwischen 0 und 255 sind.
- Bsp: um in StdIn jedes A (grosses A) in B (grosses B) zu filtern, kann
- z.B. eine der folgenden Zeilen in Filter stehen:
-
- !A !B (Character-Schreibweise)
- 65 !B (dezimale Schreibweise)
- 0x41 !B (hexadezimale Schreibweise)
- 0101 !B (oktale Schreibweise)
-
- Auch B kann in jedem der Fälle in jeder der vier Schreibweisen
- angegeben werden.
-
- Beispiel:
- tr tab.tr <datei.txt >prt:
- filtert die Datei datei.txt mit der Filterdatei tab.tr. Das Ergebnis wird
- zum paralellen Drucker (prt:) geschickt.
-
- -----
- trap - Definieren eines Kommandos zum Beenden der Shell
-
- Syntax: trap [-|[+]Kommando {Parameter}]
-
- Es wird ein Shell-Kommando definiert, das nach dem Beenden der Shell mit
- exit oder Control-V aufgerufen wird. Das Trap-Kommando wird nur beim Beenden
- der Shell selber ausgeführt, nicht beim Beenden eines Shell-Scripts mit exit
- oder bei einem shutdown (außer bei shutdown -t).
- Beim Aufruf ohne Parameter wird das aktuelle Trap-Kommando ausgegeben.
- Beim Aufruf mit einem Minuszeichen wird das Trap-Kommando gelöscht.
- Beim Aufruf mit einem anderen Parameter als einem Minuszeichen wird dieser
- Parameter als Trap-Kommando gespeichert. Wenn der Parameter mit einem Plus-
- zeichen beginnt, wird das Pluszeichen entfernt und der Rest an das bisherige
- Trap-Kommando angehängt.
-
- Beispiele:
- trap echo hallo
- definiert "echo hallo" als das Kommando, das nach
- einem exit ausgeführt werden soll.
- trap
- gibt das zuvor definierte Kommando aus.
- trap -
- löscht die Einstellung.
- trap cls ^; echo Byebye
- löscht beim Ende der Shell den Bildschirm und
- schreibt "Byebye". Nach Eingabe von trap ohne
- Parameter erscheint von da an "cls ; echo Byebye".
- trap cls ; echo Byebye
- löscht beim Ende der Shell nur den Bildschirm,
- "Byebye" wird sofort geschrieben.
- trap `trap` ^; echo Byebye
- hängt das Kommando "echo Byebye" an den aktuellen
- trap-String an.
- trap +echo Byebye
- ebenso.
-
- Eine sinnvolle Anwendung ist
- trap cursor -v
- im Profile. Dadurch wird verhindert, daß nach dem Ende der Shell der
- Cursor auf dem Desktop weiterhin sichtbar ist.
-
- Anmerkung: Wer ständig mit gon arbeitet, braucht goff nicht durch das trap-
- Kommando geben zu lassen, da goff bei Ende der Shell automatisch ausgeführt
- wird.
-
- Siehe auch: exit
- history
- shutdown
- "Speichern und Restaurieren der Shell-Einstellungen"
- in tricks.doc
-
- -----
- true - Rückgabe von 1
-
- Syntax: true
-
- Dieses Kommando liefert immer eine 1 zurück. Es wird normalerweise mit dem
- while-Kommando benutzt.
-
- Beispiel: Programmieren einer Endlosschleife. Sie kann durch "break" im
- Schleifenrumpf beendet werden.
-
- while true
- do
- ............. (irgendwelche Kommandos)
- done
-
- Siehe auch: while
- if
- false
-
- -----
- ts - Terminal Server
-
- Syntax: ts [-detrf] [-hHerald] [-lLogin] [-pPasswort] [-mAnzahl] [-bGerät]
-
- Dieses Kommando verwandelt die Okami-Shell in einen Terminal-Server, der
- Kommandos von einer beliebigen Schnittstelle annimmt und ausführt. Man kann
- den ST also über eine Modem- oder Kabelverbindung von einem anderen Rechner
- aus fernsteuern.
- Die Ein/Ausgabe läuft unter das mit -b angegebene Bios-Gerät. Folgende
- Angaben sind möglich:
-
- 0 paralelle Schnittstelle (Drucker)
- 1 serielle Schnittstelle (Modem) (default)
- 2 Konsole (keine gute Idee)
- 3 Midi-Schnittstelle
- 4 Tastatur (eine sehr schlechte Idee)
-
- Wenn ein Herald (Einschaltmeldung) angegeben ist, wird dieser zuerst über die
- Schnittstelle geschickt. Danach kann der Benutzer am anderen Ende der Leitung
- sich über Login und Passwort, falls angegeben, autentisieren. Die Shell
- fragt über die Schnittstelle "login:" bzw. "Password:", das Kommando wird
- nur fortgesetzt, wenn der Benutzer die in der Kommandozeile nach -l bzw. -p
- angegebenen Strings eingibt.
- (Login und Passwort sind also zwei äquivalente Kennworte. ts verwaltet nicht
- wie Unix verschiedene Benutzer-Logins, die jeweils ein eigenes Passwort haben.)
-
- Die nach -m angegebene Anzahl legt fest, wie oft ein fehlerhaftes Login oder
- Passwort eingegeben werden darf. Wenn diese Zahl kleiner als 0 ist, darf man
- beliebig viele falsche Logins bzw. Passworte eingeben (dies ist die Default-
- Einstellung).
- Wenn der Benutzer an der Schnittstelle als Login "exit" eingibt, wird ts
- beendet.
- ts liest von der angegebenen Schnittstelle Kommandos und führt diese aus, so-
- lange bis auf der Tastatur des ST eine Taste gedrückt oder von der Schnitt-
- stelle das Kommando "exit" eingegeben wird. FÜhrende und endende Leerzeichen
- der Schnittstellen-Eingaben werden ignoriert. Die Ausgabe der eingelesenen
- Kommandos wird wieder über die Schnittstelle übertragen, wenn nicht das Flag
- -r angegeben ist. Alle eingelesenen Kommandos und deren Ausgaben werden auf
- dem Bildschirm des ST protokolliert, wenn nicht das Flag -e angegeben ist.
- Alle Eingaben des Terminals können mit Backspace bzw. Ctrl-H korrigiert wer-
- den.
-
- Achtung: interaktive Kommandos, die Tastatureingaben benötigen, wie rm -i oder
- pg, können auf diese Weise nicht benutzt werden, da diese nur die Tastatur
- des ST abfragen!
-
- Flags: -d Der Server arbeitet nicht voll-duplex. Wenn dieses Flag nicht
- angegeben ist, werden alle empfangenen Zeichen wieder zurück
- über die Schnittstelle geschickt. Wenn -d angegeben ist, ge-
- schieht das nicht, das angeschlossene Terminal muß die Zeichen
- also selber ausgeben.
- -e Die empfangenen Kommandos und deren Ausgaben erscheinen nicht
- auf dem Bildschirm.
- -t Die empfangenen Kommandos werden nicht ausgeführt.
- -r Die Ausgabe der empfangenen Kommandos wird nicht auf die
- Schnittstelle umgeleitet.
- -f Vor jedem Login wird der Schnittstellenpuffer gelöscht.
- -h Angabe der Einschaltmeldung, die vor jedem Login über die
- Schnittstelle geschickt wird.
- -l Angabe eines optionalen Login-Kennwortes.
- -p Angabe eines optionalen Passwortes.
- -m Maximalanzahl der falschen Logins/Kennworte.
- -b Angabe der zu benutzenden Schnittstelle (Bios-Gerätenummer).
-
- Beispiel:
- Eingabe auf dem ST: ts -lroot -patari -h"Okami Shell^015^n"
- Auf dem (an der seriellen Schnittstelle) angeschlossenen Terminal:
-
- Ausgabe Eingabe
-
- Okami Shell
- login: root
- password: atari
- $ ......... (irgendein Shell-Kommando)
- (Ausgabe desselben) exit
- Okami Shell
- login: exit
-
- Durch die Eingabe von "exit" als Login wird ts beendet.
- Als Terminal kann z.B. ein Atari Portfolio mit der seriellen Schnittstelle
- und dem xterm-Programm von der Diskette des Portfolio-Praxisbuches betrie-
- ben werden. Natürlich kann man sich (was vielleicht sinnvoller ist) auch
- über eine Modem-Verbindung auf diese Weise in den ST einloggen.
-
- Siehe auch: te
-
- -----
- type - Aufrufpfad von Kommandos ermitteln
-
- Syntax: type [-fs] Kommando {Kommando}
-
- Es wird ausgegeben, unter welchem Pfad die Shell das Programm zu dem
- angegebenen Kommando aufrufen würde. Wenn es sich um ein internes
- Kommando handelt, erscheint die Meldung "... is a shell builtin".
- Wenn es sich um eine Shellfunktion handelt, erscheint die Meldung
- "... is a function", außerdem wird die Definition der Funktion ausgegeben
- (falls das Flag -f nicht angegeben ist).
-
- Benutzt werden die Shellvariablen $PATH für die Pfade, auf denen das
- Kommando gesucht wird, sowie $XEXT und $SEXT für die zu untersuchenden
- Dateinamen-Extender. Wenn ein Kommando in der Hash-Tabelle enthalten ist,
- wird die dort gespeicherte Pfad ausgegeben, ohne daß auf der Platte gesucht
- wird. Es erscheint dann die Ausgabe "... is hashed".
-
- Beispiel: Es sei d:\shell\bin\test.prg eine Programmdatei. $PATH enthalte
- den Pfad d:\shell\bin, $XEXT enthalte den Extender .prg (z.B.:
- PATH=.,..,d:\shell,d:\shell\bin
- XEXT=.prg,.tos,.ttp
- Dann wird bei der Eingabe von "type test" der vollständige Pfadname
- der Datei test.prg ausgegeben. Wenn das aktuelle Directory d:\shell\bin
- ist, erzeugt "type test" die Ausgabe "test is .\test.prg".
-
- Flag: -f Wenn dieses Flag angegeben ist, wird bei einer Shell-
- funktion nur die Zeile "... is a function" ausgegeben
- und nicht die vollständige Definition der Funktion.
- -s Es wird nur der vollständige Name der angegebenen Kommandos
- ausgegeben, also nicht "... is a shell builtin" etc. Bei
- internen Kommandos und Shellfunktionen ist das der Name,
- bei externen Kommandos der Aufrufpfad.
-
- Siehe auch: hash
- den Abschnitt über externe Kommandos
-
- -----
- unalias - SIEHE unset
-
- -----
- unset, unalias - Shellfunktionen und -variablen löschen
-
- Syntax: unset|unalias Name {Name}
-
- Alle angegebenen Shellfunktionen und -variablen werden gelöscht. Vorsicht:
- wenn es zu einem der angegebenen Namen sowohl eine Funktion als auch eine
- Variable gibt, werden beide gelöscht. Daher empfiehlt es sich, sich an die
- Konvention zu halten, Variablennamen in Großbuchstaben und Funktionsnamen
- in Kleinbuchstaben zu benutzen.
- Dieses Kommando kann auch unter dem Namen unalias angesprochen werden, um das
- Ausführen von Shellscripts zu ermöglichen, die für C-Shell-orientierte Shells
- geschrieben wurden.
-
- Siehe auch: alias
-
- -----
- upn, rpn - UPN-Rechner incl. Einheitenumrechner
-
- Syntax: upn|rpn [%Fmt] UPN-Ausdruck
-
- Mit diesem Kommando können beliebige mathematische Ausdrücke berechnet wer-
- den. Die Ausdrücke werden in der umgekehrten polnischen Notation (UPN) an-
- gegeben, weil (1) ich ein Fan von HP-Rechnern bin und (2) weil ein Auswerter
- für UPN-Ausdrücke einfacher zu programmieren ist. Wer eher auf die englische
- Schreibweise steht, kann dieses Kommando auch unter dem Namen "rpn" aufrufen.
-
- Ein UPN-Ausdruck ist eine Folge von durch Leerzeichen (:= Space, Tab...)
- getrennten Zahlen oder Operationen.
- Eine Zahl hat das Format
- [-][Vorkommastellen][.Nachkommastellen][E Exponent]
- Jede Zahl, die in einem UPN-Ausdruck steht, wird auf einen internen Stack
- geschoben. Dieser Stack faßt bis zu 32 Zahlen. (Wer mehr braucht, kann den
- Software-Support benutzen, um eine erweiterte Version der Shell zu bekommen.
- Die tatsächliche Größe des Stacks kann mit "ver -l" ermittelt werden.)
- Außerdem gelten die Symbole "pi" und "e" als Zahlen und schieben die Kreis-
- zahl Pi bzw. die Eulersche Zahl e auf den Stack.
- Als Operation gilt alles, was keine Zahl ist. Die Operationen nehmen 0,
- 1 oder 2 Zahlen vom Stack, machen etwas damit und legen das Ergebnis auf
- den Stack zurück.
- Nachdem der ganze UPN-Ausdruck auf diese Weise ausgewertet wurde, wird das
- oberste Stack-Element auf StdOut ausgegeben. Das dabei verwendete Format
- kann angegeben werden; gemeint ist das Format für die printf-Funktion.
- Das Format kann das Ergebnis als long- oder double-Zahl ausgeben, das Resul-
- tat bei Verwendung eines anderen Formats (z.B. %s) ist undefiniert. Näheres
- siehe ein beliebiges C-Handbuch.
- Zusätzlich zum Stack gibt es einen Speicher, der bis zu 10 Werte faßt, die
- beliebig geschrieben und gelesen werden.
-
- Achtung:
- (1) Es darf nur die Formatangabe gemacht werden, keinen weiteren Text ange-
- ben (z.B. "upn '%Das Ergebnis ist %d' 2 2 +" ist falsch - benutze statt-
- dessen "echo Das Ergebis ist `upn %ld 2 2 +`")
- (2) Bei Integerformaten muß das long-Format angegeben werden, also nicht
- "upn %d ...", sondern "upn %ld ...." (analog für %x). Ebenso sollte nicht %f,
- sondern %lf für Fließkommaformate verwendet werden.
-
- Stack und Speicher sind global und behalten ihren Inhalt über mehrere Auf-
- rufe des upn-Kommandos hinweg. Man kann also z.B. mit "upn 123" eine Zahl
- auf den Stack legen, dann weitere Kommandos ausführen und die Zahl dann
- erst mit einem erneuten upn-Aufruf verarbeiten. Der Stack faßt maximal
- 32 Zahlen. (Wer mehr braucht: Software-Support benutzen... Die tatsächliche
- Stackgröße einer Shellversion kann mit "ver -l" ermittelt werden)
-
- Eine Liste aller verfügbaren UPN-Funktionen findet sich in dieser Datei
- zu dem Stichwort "upnfkt".
-
- Eine komfortable Schnittstelle zum upn-Kommando ist das externe Kommando
- calc (siehe dort).
-
- Rückgabewert: Der ganzzahlige Anteil des obersten Stack-Elements (x).
-
-
- Siehe auch: upnfkt
- calc (externes Kommando)
-
- -----
- upnfkt - Funktionen des UPN-Rechners
-
- Zur Bedienung des UPN-Rechners siehe das Stichwort upn. Dieser Abschnitt
- erklärt alle Operationen, die im UPN-Rechner zur Verfügung stehen.
-
- Im folgenden bedeutet x die oberste und y die zweitoberste Zahl auf dem
- Stack. "x := x+y" bedeutet, daß zwei Zahlen vom Stack genommen und addiert
- und daß das Ergebnis wieder auf den Stack gelegt wird.
-
-
- Speicheroperationen:
-
- sto speichert y in Speicher x. Es wird nichts auf den Stack
- zurückgelegt.
- rcl liefert den Inhalt von Speicher x.
-
- In beiden Fällen wird, wenn x größer als 9 ist, (x mod 10) benutzt.
- Zu Beginn werden alle Speicherplätze zu 0 initialisiert.
-
-
- Mathematische Operationen:
-
- +,-,*,/,\ x := y +-*/ x (Grundrechenarten) (*)
- % x := y % x (Modulo)
- ** x := y hoch x (Potenzieren)
- ++ x := x+1 (Inkrement)
- -- x := x-1 (Dekrement)
- chs x := -x (Vorzeichenwechsel)
- rcp x := 1/x (Reziprokwert)
- log x := log (y) x (Log. zur Basis y)
- ln x := ln x (Log. zur Basis e)
- lg x := lg x (Log. zur Basis 10)
- ld x := ld x (Log. zur Basis 2)
- deg x := x * (180/Pi) (Umrechnung Rad.->Deg.) (**)
- grad x := x * (200/Pi) (Umrechnung Rad.->Grad) (**)
- sin x := sin x (Sinus)
- sinh x := sin hyp x (Sinus Hyperbolicus)
- asin x := arc sin x (Arcus-Sinus)
- asinh x := arc sin hyp x (Arcus-Sinus Hyperbolicus)
- cos x := cos x (Cosinus)
- cosh x := cos hyp x (Cosinus Hyperbolicus)
- acos x := arc cos x (Arcus-Cosinus)
- acosh x := arc cos hyp x (Arcus-Cosinus Hyperbolicus)
- tan x := tan x (Tangens)
- tanh x := tan hyp x (Tangens Hyperbolicus)
- atan x := arc tan x (Arcus-Tangens)
- atanh x := arc tan hyp x (Arcus-Tangens Hyperbolicus)
- sqrt x := sqrt x (Quadratwurzel)
- sqr x := x*x (Quadrat, schneller als "x 2 **")
- exp x := e hoch x
- exp2 x := 2 hoch x
- exp10 x := 10 hoch x
- abs x := |x| (Betrag)
- sign x := signum x (Vorzeichen: -1, 0, 1)
- min x := min {x,y} (Minimum)
- max x := max {x,y} (Maximum)
- fact x := x! (Fakultät)
- int x := int x (Vorkommastellen)
- frac x := frac x (Nachkommastellen)
- rand x aus (0,1) (Zufallszahl)
- rnd x := x gerundet auf 1. Vorkommastelle
-
- Außerdem gibt es die folgenden Einheiten-Umrechenfunktionen, die jeweils
- x umrechnen:
-
- in2mm mm2in (inch <-> Millimeter)
- ft2m m2ft (Foot <-> Meter)
- mi2km km2mi (Meilen <-> Kilometer)
- m2yd yd2m (Meter <-> Yards)
- m2nmi nmi2m (Meter <-> nautische Meilen)
- m2rod rod2m (Meter <-> Rod, was immer das ist)
- m2pc pc2m (Meter <-> Parsec)
- gal2l l2gal (Gallonen <-> Liter)
- lb2kg kg2lb (engl. Pfund <-> Kilogramm)
- kg2oz oz2kg (Kilogramm <-> Unzen)
- kg2ozt ozt2kg (Kilogramm <-> Troy-Unzen)
- kg2u u2kg (Kilogramm <-> Units (atomare Masseeinheit))
- kg2slug slug2kg (Kilogramm <-> Slug)
- f2c c2f (Fahrenheit <-> Celsius)
- c2k k2c (Celsius <-> Kelvin)
- ms2mph mph2ms (Meter/Sekunde <-> Meilen pro Stunde)
-
- Die folgenden Größenordnungsumrechenfunktionen rechnen x in die jeweilige
- Größenordnung um. Um 2500 Gramm in Kilogramm umzurechnen, lautet der Aufruf
- also "upn 2500 kilo".
-
- 10 hoch i: 10 hoch -i: i:
- exa atto 18
- peta femto 15
- tera pico 12
- giga nano 9
- mega micro 6
- kilo milli 3
- hecta centi 2
- deca deci 1
-
- Die folgenden Größenordnungen arbeiten auf Basis 2, z.B. um Bytes in Kilo-
- bytes umzurechnen.
-
- 2 hoch i: 2 hoch -i: i:
- bgiga bnano 1000
- bmega bmicro 100
- bkilo bmilli 10
-
- In den Umrechenfunktionen steht die 2 übrigens für das englische Wort "to",
- das genauso ausgesprochen wird wie "two"; "in2mm" liest man also
- "inch to millimeter".
- Quellen für die Umrechnungsfaktoren: die Taschenrechner Hewlett-Packard 28C
- und Commodore SR9190R.
-
-
- Sonderfunktionen:
-
- help Es wird eine Liste aller verfügbarer Operationen ausgegeben. Hinter
- den Operationen erscheint in Klammern die Anzahl der Zahlen, die
- für die Operation vom Stack genommen werden.
-
- list Gibt den aktuellen Inhalt des Stacks auf dem Bildschirm aus.
-
- look Tut nichts. Dient dazu, das oberste Stackelement noch einmal aus-
- zugeben.
-
- swap Vertauscht die obersten beiden Stackelemente (x und y).
-
- dup dupliziert das oberste Stackelement.
-
- pop Löscht das oberste Element vom Stack.
-
- clr Löscht den gesamten Stack. Der Speicher ist davon nicht betroffen.
-
-
- ANMERKUNGEN:
-
- (*) Zur Division kann sowohl der Slash (/) als auch der Backslash (\)
- benutzt werden. Dadurch ist es möglich, den UPN-Rechner zu benutzen, auch
- wenn das Shell-Flag -b gesetzt ist, das alle Slashes in der Eingabe in
- Backslashes umformt.
-
- (**) Die trigonometrischen Funktionen wie sin, cos etc. arbeiten alle
- im Gradmaß (Kreis = 2 Pi Grad). Mit den Operationen deg und grad können
- Winkelangaben in Altgrad (Kreis = 360 Grad) und Neugrad (Kreis = 400 Grad)
- umgerechnet werden.
-
-
- Beispiele:
- 1) Ausrechnen von 3+4:
- upn 3 4 +
- 2) Berechnen der Oberfläche eines Kreises mit Radius 10:
- upn 10 sqr pi *
- 3) Berechnen der Oberfläche eines Kreises mit Radius 123 mm in Zoll (inch):
- upn 123 sqr pi * mm2in
- 4) Umrechnen von 36 Grad Celsius (Temperatur in Aachen am 12.8.1990) in
- Fahrenheit:
- upn 36 c2f
- 5) Und die Temperatur in Aachen am 7.2.1991:
- upn 12.2 f2c
- 6) Ab welcher Temperatur in Kelvin fängt Papier an zu brennen?
- upn 451 f2c c2k
- 7) Wieviele Kilometer haben 25 nautische Meilen?
- upn 25 nmi2m kilo
- 8) Wieviele Gramm hat eine Unze?
- upn 1 oz2kg milli
- 9) Wieviele Bytes hat ein Kilobyte?
- upn 1 bkilo
- 10) Und wieviele Bits hat ein Mega-ST 4?
- upn 4 bmega 8 *
- 11) Benutzung des Formatstrings: Ausgabe der Fakultät von 12 in Hex:
- upn %lx 12 fact
- 12) Shellvariablen können auch beutzt werden:
- echo Geben Sie zwei Zahlen ein:
- read x
- read y
- echo Die größere der Zahlen ist ^c
- upn %ld $x $y max
- 13) Auflisten aller Operationen:
- upn help
- 14) Zählen der Operationen des UPN-Rechners:
- upn %ld `upn help | wc -w` 2 /
- (zur Erklärung: "upn help" gibt für jede Operation zwei Worte aus, nämlich
- den Namen der Operation und die Anzahl der Parameter. "upn help | wc -w"
- zählt die Worte. Mit dem Ergebnis wird upn nochmals aufgerufen, um es durch
- 2 zu teilen und damit die Anzahl der Operationen zu ermitteln.)
- 15) Wieviel Speicherplatz in Kilobytes belegt eine Shell?
- upn %ld `mem` `sh mem` - bkilo
- 16) Ausgabe des Ergebnisses der letzten Berechnung:
- upn look
- 17) Benutzung des Speichers: Berechnen von sin 30, ablegen in Speicher 0,
- berechnen von cos 75, ablegen in Speicher 1, berechnen der Wurzel von
- 3, ablegen in Speicher 2 und 3. Danach den Inhalt von Speicher 1 mit dem
- von Speicher 3 multiplizieren, davon den Logarithmus zur Basis Speicher 0
- berechnen und durch Speicher 2 teilen.
- upn 30 sin 0 sto 75 cos 1 sto 3 sqrt 2 sto 2 rcl 2 sto
- upn 0 rcl 1 rcl 3 rcl * log 2 rcl /
-
- -----
- vars - Shellvariablen auflisten
-
- Syntax: vars [-aexs]
-
- Gibt eine Liste der vom Anwender angelegten Shellvariablen nach StdOut.
- Die Ausgabe besteht aus dem Variablennamen, dem aktuellen Wert und dem
- Variablenstatus. Folgende Status-Angaben sind moeglich:
-
- USR Die Variable wurde vom Anwender oder von einem Shell-Script
- angelegt oder veraendert.
- SYS Die Variable wird vom System fuer das System angelegt.
- R/O Der Wert der Variablen kann nicht veraendert werden und
- die Variable kann nicht geloescht werden (siehe readonly).
- EXP Die Variable ist exportiert worden (siehe export).
-
- Flags: -a Es werden alle Shellvariablen (auch die Systemvariablen)
- ausgegeben.
- -e Es werden nur Variablen ausgegeben, die sich im Environment
- befinden (Status EXP).
- -x Die Variablen werden im Deklarationsformat, als in der
- Form "NAME=WERT" ausgegeben. Der Variablenstatus wird
- nicht ausgegeben. Dieses Format kann in ein Shellscript
- übernommen werden.
- -s Es wird eine Statistik ueber den freien und belegten Platz
- in der Variablentabelle ausgegeben.
-
- Beispiele:
-
- Anlegen einer Variablen:
- VAR=Hallo
-
- "vars" erzeugt eine Ausgabe der Art:
-
- VAR =Hallo USR
-
- "vars -x" erzeugt eine Ausgabe der Art:
-
- VAR=Hallo
-
- Siehe auch: env
- export
- readonly
-
- -----
- ver - Versionsnummern ausgeben
-
- Syntax: ver [-oclgtdpmMa]
-
- Wenn kein Flag angegeben ist, wird -oc angenommen.
-
- Die Flags haben folgende Bedeutung:
-
- -o Ausgabe der Versionsnummer der Shell.
- -c Ausgabe von Datum und Uhrzeit des Kompilierens der Shell. Damit
- lassen sich verschiedene Upgrades innerhalb einer Versionsnummer
- unterscheiden.
- -l Es wird eine genauere Analyse der Möglichkeiten der vorliegenden
- Shell-Version ausgegeben, die Angaben über die Maximalanzahl der
- Funktionen und Variablen, die Größe des UPN-Stacks usw. enthält.
- -g Ausgabe der Gemdos-Versionsnummer. Sie wird mit der Gemdos-Funktion
- Sversion festgestellt und im Format Hauptnummer.Unternummer ausge-
- geben.
- -t Ausgabe der TOS-Version und Länderkennung. Stammt aus dem TOS-
- Systemheader.
- -p Ausgabe der PAL-Bildfrequenz (50 oder 60 Hz), ebenfalls aus dem
- TOS-Systemheader.
- -d Ausgabe des TOS-Datums. Stammt ebenfalls aus dem TOS-Systemheader
- und wird wie dort im Format Monat/Tag/Jahr ausgegeben.
- -m Ausgabe der Versionsnummer des installierten MiNT. Wenn kein MiNT
- installiert ist, erscheint "none".
- -M Wie -m, aber es wenn MiNT nicht installiert ist, wird keine Ausgabe
- erzeugt.
- -a Es erfolgen alle diese Ausgaben (außer -M und -l).
-
- Beispiel: "ver -a" ergibt auf einem 1040ST mit deutschem TOS 1.4 und ohne MiNT
- folgende Ausgabe:
-
- Okami Shell 1.3c [-o]
- compiled Nov. 22, 1991 21:09 [-c]
- GEMDOS Version 0.21 [-g]
- TOS Version 1.4 (FRG) [-t]
- TOS Date 04/06/1989 [-d]
- PAL Mode 60 Hz [-p]
- MiNT Version: none [-m]
-
- In eckigen Klammern jeweils das Flag, das die betreffende Zeile erzeugt (er-
- scheint nicht in der Ausgabe).
- Bei den Flags -o und -c erscheinen natürlich andere Werte, je nach der ver-
- wendeten Version der Shell.
-
- "ver -l" gibt bei der Standardversion folgende Ausgabe:
-
- Max. # of variables 200
- Max. # of functions 200
- Max. # of nested while's 16
- Max. # of lines for sort 500
- Max. filespec length 80
- Max. length of input line 400
- Length of history buffer 100
- Size of hash table 101
- Length of RPN stack 32
- Size of RPN store 10
- Version supports MiNT
-
- "Max. # of nested while's" ist die Maximalanzahl der while-Schleifen, die
- ineinander geschachtelt werden können.
- "Max. # of lines for sort" ist die Maximalanzahl der Zeilen, die mit dem
- internen Kommando sort sortiert werden können.
- "Max. filespec length" ist die maximale Länge eines Dateinamens incl. Pfad.
- "Max. length of input line" ist die maximale Länge einer Eingabezeile nach
- der Expansion von Variablen, Command Substitution usw.
- "Length of history buffer" ist die Anzahl der Eingabezeilen, die in dem
- Ringpuffer der Tastatur-History gespeichert werden können.
- "Size of hash table" ist die Größe der internen Hash-Tabelle. Dies sollte
- immer eine Primzahl sein.
-
- -----
- virus - Bootsektorviren aufspüren und entfernen
-
- Syntax: virus [-xvsi] {drive}
-
- Es wird der Bootsektor von jedem angegebenen Laufwerk eingelesen und auf
- Ausführbarkeit getestet. Ein Bootsektor ist ausführbar, wenn seine Prüf-
- summe 0x1234 beträgt; nur in diesem Fall kann ein Virus sich beim Booten
- dieser Diskette oder Partition im Speicher einnisten. Auf Wunsch wird ein
- ausführbarer Bootsektor nicht-ausführbar gemacht.
- Wenn kein Laufwerk angegeben ist, wird nur Laufwerk A: untersucht.
-
- Flags:
- -x Ein ausführbarer Bootsektor wird nicht-ausführbar gemacht,
- indem das letzte Byte des Bootsektors inkrementiert wird.
- -v Es erscheinen Meldungen über Prüfsumme und Ausführbarkeit
- zu jedem untersuchten Laufwerk. Wenn dieses Flag nicht an-
- gegeben ist, werden nur Meldungen über ausführbare Boot-
- sektoren ausgegeben.
- -s Der Bootsektor wird nicht untersucht, sondern nach StdOut
- geschrieben.
- -i Der Bootsektor wird nicht von dem angegebenen Laufwerk,
- sondern von StdIn eingelesen. Wenn der eingelesene Boot-
- sektor ausführbar ist und -x gesetzt ist, wird der Boot-
- sektor auf das angegebene Laufwerk geschrieben.
- -rambo Erzeugt durch Erhöhen der Prozessortaktfrequenz in Ver-
- bindung mit dem Virus-Code ein Hyperfunksignal, das auf
- beliebige Entfernung den Programmierer des Virus erreicht
- und sein Gehirn mindestens 10E7 Lichtjahre weit weg
- teleportiert. (Noch nicht implementiert)
-
- Beispiele:
- virus
- untersucht Laufwerk A: und gibt eine Warnung aus, wenn der
- Bootsektor ausführbar ist, ändert ihn aber nicht. Dieses
- Kommando kann in Shellscripts stehen, da es sich im
- Normalfall (Bootsektor ist nicht ausführbar) "unsichtbar"
- verhält.
- virus B: C:
- dasselbe für Laufwerk B: und Partition C:.
- virus bc
- genauso wie das vorige Beispiel.
- virus -s a: >boot.dat
- der Bootsektor von Laufwerk A: wird in die Datei boot.dat
- geschrieben.
- virus -i -x a: <boot.dat
- der zuvor gesicherte Bootsektor wird auf Ausführbarkeit
- untersucht und ggfs. nicht-ausführbar gemacht.
- virus -s c: | hd
- es wird ein Hexdump des Bootsektors von Partition C: er-
- zeugt.
-
- Rückgabewert:
- -1 Aufruffehler
- 0 Der Bootsektor ist nicht ausführbar (gemacht worden).
- 1 Der Bootsektor ist (immer noch!) ausführbar.
- Hierbei bezieht sich dieser Wert auf das zuletzt untersuchte Laufwerk.
-
- Die Idee zu diesem Kommando stammt aus dem Data-Becker-Buch "Atari ST intern
- Band 2" von Martin Pauly, allerdings habe ich die Flags -s und -i hinzu-
- gefügt und die Einleseroutinen geändert, damit auch Festplattenpartitionen
- untersucht werden können.
-
- -----
- wc - Zeilen, Worte und Zeichen zählen
-
- Syntax: wc [-lwcn] {File}
-
- Es werden die Anzahl der Zeilen, Worte und Zeichen der angegebenen Datei
- oder von StdIn ausgegeben. Ein Wort wird durch Leerzeichen, Tabs oder
- Newline-Zeichen begrenzt.
-
- Flags: -l Ausgabe der Anzahl der Zeilen
- -w Ausgabe der Anzahl der Worte
- -c Ausgabe der Anzahl der Zeichen
- -n Ausgabe des jeweiligen Dateinamens
- Wenn keine Flags angegeben sind, gelten alle Flags als aktiviert.
-
- Beispiel:
- 1) Ausgabe der Anzahlen der Zeilen und Zeichen aller C-Quell- und Header-
- dateien im aktuellen Directory:
- wc -lcn *.c *.h
-
- 2) Ausgabe der Anzahl der internen Kommandos:
- cmds | wc -l
-
- Rückgabewert:
- -1 Aufruffehler
- sonst die Anzahl der gezählten Dateien.
-
- -----
- what - Dateien identifizieren
-
- Syntax: what [-s] {Datei}
-
- Dieses Kommando ist in der Unix-Welt sehr beliebt und gehört dort zu dem
- Sourcecode-Control-System (SCCS). Der Sinn ist, eine jede Datei, egal ob
- Ascii oder binär, anhand eines speziellen Codes identifizieren zu können.
- Dieser Code steht irgendwo in der Datei, gefolgt von einer Zeichenkette, die
- die Datei, den Autor und die Version kennzeichnet. Der Code ist @(#) (At
- Klammer auf Doppelkreuz Klammer zu).
- Das Kommando what sucht in jeder angegebenen Datei (oder in StdIn, wenn keine
- Datei angegeben ist) nach der Zeichenkette @(#) und gibt alles aus, was
- dahinter bis zum nächsten doppelten Anführungszeichen ("), Größerzeichen (>),
- Zeilenende (\n) oder Nullbyte (\0) kommt.
- Die übliche Art, diesen Identifikationsstring in einem Programm unterzubringen,
- ist folgende Zeile kurz nach Dateibeginn:
-
- static char _M_ID_[]="@(#) Okami Shell 1.3 - cmds5.c";
-
- Die Zeichenkette "@(#) Okami Shell 1.3 - cmds5.c" steht dann sowohl in der
- C-Quelldatei als auch in dem O-File und dem ausführbaren Programm. Wenn alle
- Module eines Programms auf diese Weise gekennzeichnet sind, kann man mit
- what eine Liste aller Module, auch Librarymodule, bekommen, aus denen ein
- Programm zusammengesetzt ist.
- Wer die Quellen der Okami-Shell hat, kann mit what die Namen der in den einzel-
- nen Modulen enthaltenen Funktionen ermitteln (z.B. "what cmds*.c").
-
- Flag: -s Wenn dieses Flag angegeben ist, wird nur das erste @(#) in
- der Datei gesucht.
-
- Beispiel:
- what *.sh erzeugt eine Liste der Versionen aller Shellscripts
- what -s doc/* eine Art Inhaltsverzeichnis der Anleitungsdateien
- what sh.ttp ermittelt die Namen aller Quelldateien der Shell.
- Ggfs. muß sh.ttp vorher ent-pfxgepackt werden.
-
- -----
- while , do, continue, break, done - Schleifen
-
- Syntax: while Kommando1
- do
- {Kommandos2|continue|break}
- done
-
- Das while-Konstrukt darf nur in Shell-Scripts stehen. Die Ergebnisse bei
- der Eingabe von der Tastatur oder einer Schnittstelle sind undefiniert
- (was völlig natürlich ist).
-
- Die Zeilen zwischen "do" und "done" werden ausgeführt, bis Kommando1
- den Rückgabewert 0 liefert. In diesem Fall wird mit der Ausführung in der
- "done" folgenden Zeile fortgefahren.
- Das Kommando "break" beendet die while-Schleife augenblicklich. Es darf in
- einem if-fi-Konstrukt stehen (was es normalerweise auch tut).
- Das Kommando "continue" springt zurück zum zugehörigen "while"-Kommando.
- Der aktuelle Schleifendurchlauf wird also beendet, und es beginnt ein
- neuer Schleifendurchlauf. Ebenso wie "break" darf auch "continue" in einem
- if-fi-Konstrukt stehen.
- Die Wirkung von "break" und "continue" ist demnach identisch mit der von
- "break" und "continue" in der Programmiersprache C.
-
- Typische Kandidaten für "Kommando1" sind true, false und test (bzw. "[").
-
- Beispiele:
-
- 1) Wiederholen von Anweisungen:
-
- while [ $X != abc ]
- do
- echo Bitte abc eingeben.
- read X
- done
-
-
- 2) Dateien mit der Fileselect-Box einlesen, bis der Anwender "Abbruch"
- anklickt:
-
- while true
- do
- fsel *.* . BUTTON
- if [ $BUTTON = 0 ]
- then
- break
- fi
- done
-
- "while true" ist also eine Endlosschleife, die nur durch break verlassen
- werden kann.
-
-
- 3) Wie 2), aber es werden nur Dateien akzeptiert, die noch nicht existieren.
- Wenn eine bereits existierende Datei angewählt wurde (was mit [ -f $FILE ]
- herausgefunden wird), wird die while-Schleife mit "continue" von vorne
- begonnen.
-
- while true
- do
- # den Dateinamen in die Variable FILE einlesen
- FILE=`fsel *.* datei.txt BUTTON`
- if [ $BUTTON = 0 ]
- then
- break
- fi
- if [ -f $FILE ]
- then
- continue
- fi
- ...................... (mache was mit $FILE)
- done
-
-
- 4) Eine Variable eingeben lassen, solange bis sie wirklich einen Wert
- enthält.
-
- while [ -v VARIABLE ]
- do
- echo Bitte geben Sie die Variable ein.
- read VARIABLE
- done
-
-
- Siehe auch: test
- true
- false
- if
-
- -----
- xargs - Eingabe als Parameter für andere Kommandos
-
- Syntax: xargs [Kommando {Parameter}]
-
- Liest Zeilen von StdIn und führt das angegebene Kommando mit den angegebenen
- Parametern und den eingelesenen Zeilen aus. Wenn kein Kommando angegeben
- ist, wird als Default "echo" benutzt.
- Wenn Kommando oder Parameter die Zeichenkette "{}" (öffnende und schließende
- geschwungene Klammer) enthalten, wird die von StdIn eingelesene Zeile
- anstelle dieser Zeichenkette eingesetzt. Ansonsten wird die eingelesene
- Zeile nach einem Leerzeichen an den Parameterstring angehängt.
-
- Beispiele:
- ls *.sh | xargs .
- führt alle Shellscripts im aktuellen Verzeichnis aus.
- ls *.c | xargs echo Die Datei {} ist da
- Erzeugt als Ausgabe z.B.:
- Die Datei sh.c ist da
- Die Datei cmds.c ist da
- Die Datei cmds2.c ist da
- usw.
- find e:\ *.dup | xargs rm -f
- Löscht alle *.dup-Dateien auf Laufwerk E: ohne Berücksichti-
- gung von Readonly-Dateien (rm -f).
- cmds | xargs echo {}"^t"^c
- Gibt die Namen aller interner Kommandos in mehreren Spalten
- auf dem Bildschirm aus. (Das geht einfacher mit "cmds -C")
-
- ==============================================================================
-
- 2) Externe Kommandos:
-
- Wenn beim Shell-Prompt ein Kommando eingegeben wird, das keinem internen
- Kommando entspricht, wird eine Datei mit dem entsprechenden Namen unter
- allen in der Shell-Variablen PATH enthaltenen Pfaden gesucht. Wenn dort
- eine Datei mit dem angegebenen Namen und einem der in $XEXT angegebenen
- Extendern existiert, wird sie als Binärdatei aufgerufen. Wenn dort eine
- Datei mit dem angegebenen Namen und einem der in $SEXT angegebenen Exten-
- dern existiert, wird sie als Shellscript ausgeführt.
-
- Beispiel: Es sei
- PATH=.,d:\bin
- XEXT=.prg,.tos
- SEXT=.sh
-
- Nach Eingabe des Kommandos "test" werden die folgenden Dateien gesucht, die
- erste gefundene Datei wird ausgeführt:
-
- test.prg
- test.tos
- test.sh
- d:\bin\test.prg
- d:\bin\test.tos
- d:\bin\test.sh
-
- Die Dateien, die auf .prg oder .tos enden, werden als Binärdateien aufge-
- rufen.
- Die Dateien, die auf .sh enden, werden als Shellscripts ausgeführt.
- Wenn mehrere der angeführten Dateien existieren, wird die nur erste
- gefundene Datei ausgeführt.
- Durch Eingabe von "type test" kann festgestellt werden, welche Datei
- durch das Kommando test ausgeführt würde oder ob es sich um ein internes
- Kommando handelt.
-
- In der Shell-Variablen GEXT werden analog zu XEXT und SEXT Extender gespei-
- chert, die angeben, welche Dateinen als GEM-Programme gestartet werden.
- GEM-Programme werden über die Shellfunktion gemexec gestartet. Diese Funktion
- kann vom Anwender frei verändert werden und darüber entscheiden, welche Aktio-
- nen sie vor und nach dem Start des Programms ausführt oder ob sie es überhaupt
- startet. Siehe hierzu auch den Abschnitt zu gemexec unter den internen Komman-
- dos.
-
- GEXT hat Wirkung auf alle Binärprogramme, also auf solche, die über die
- Eingabe ihres Namens und mit XEXT gestartet werden, als auch auf solche,
- die mit dem exec-Kommando aufgerufen werden. GEXT ist ohne Wirkung für
- Shell-Scripts, auch wenn einer der Extender in GEXT mit einem der Extender
- in SEXT übereinstimmt.
-
- Folgende Werte sind nach Start der Shell voreingestellt:
- PATH=.,..,$HOME,$HOME\bin
- XEXT=.prg,.tos,.ttp,.app
- SEXT=.sh
- GEXT=.prg
- Die Variablen können in der Datei profile verändert oder erweitert werden.
-
- Außerdem ist es möglich, den vollen Pfadnamen zum Aufruf anzugeben. Dabei
- muß jedoch auch der Extender mit angegeben werden. Das Kommando wird nur
- ausgeführt, wenn der Extender einem der in $XEXT oder $SEXT angeführten
- entspricht. (Dies entspricht dem Datei-Attribut "Executable" unter Unix.
- In der Okami-Shell wird dieses Attribut durch die Shell-Variablen XEXT und
- SEXT simuliert.)
-
-
- Der Quellcode sämtlicher externer Kommandos gehört zum Lieferumfang.
-
- Folgende externe Kommandos werden mitgeliefert:
-
-
- -----
- calc - Schnittstelle zum UPN-Rechner
-
- Datei: calc.sh
- Syntax: calc
-
- Dieses Shellscript dient dazu, das interne Kommando upn benutzerfreundlich
- aufzurufen. Es erscheint das Prompt:
- upn >
- Nun können beliebige upn-Ausdrücke eingegeben werden (siehe das interne
- Kommando upn). Jeder Ausdruck wird mit ENTER abgeschlossen. Es können auch
- unvollständige Ausdrücke angegeben werden, z.B. sind äquivalent:
-
- upn > 2 3 * 4 +
-
- und
- upn > 2 3
- upn > *
- upn > 4 +
-
- In der Eingabe kann die Zeichenkette "$_" (Dollar Underscore) benutzt wer-
- den, um das Ergebnis der letzten Eingabezeile zu repräsentieren. Beispiel:
-
- upn > 17 4 +
- upn > pi 2 * sin $_ /
-
- berechnet erst 17+4, das Ergebnis wird in der zweiten Zeile benutzt. Achtung:
- in $_ wird immer nur der ganzzahlige Anteil gespeichert.
-
- Durch Eingabe von clr wird der Stack gelöscht, durch Eingabe von list wird
- der Inhalt des Stacks ausgegeben.
-
- Das Programm wird beendet durch Eingabe von exit. Die Shellvariable "_"
- (Underscore) enthält dann den ganzzahligen Anteil des letzten Ergebnisses.
-
- Siehe auch: upn
-
- -----
- format - Disketten formatieren
-
- Datei: format.ttp
- Source: format.c
- Syntax: format -V|[-s(SPT)] [-t(TPD)] [-1] [-i(Interleave)] [-v(Virgin)]
- [-n(VersNr)] [-N] [-B] [-x] [-q] [-l(Diskname)][Drive]
-
- Vor dem Formatieren erfolgt eine Sicherheitsabfrage. Nach Eingabe von y
- wird formatiert, nach einer anderen Eingabe oder Druck auf ENTER wird das
- Programm abgebrochen.
- Ebenso erfolgt eine Sicherheitsabfrage bei eigenartigen Werten (z.B.
- anderen Laufwerksnummern als A: und B: etc.)
-
- Die Voreinstellungen der einzelnen Flags sind:
- format -s9 -t80 -i1 -v0xe5e5 -n0x1000001 A:
-
-
- Flags:
- -V Die Versionsnummer und das Kompilierungsdatum des Formatier-
- programms werden ausgegeben. Es wird nicht formatiert. Alle
- anderen Parameter sind ohne Wirkung.
- -s Anzahl der Sektoren pro Track. Default: 9.
- -t Anzahl der Tracks pro Seite. Default: 80.
- -1 Wenn angegeben, wird die Diskette einseitig formatiert.
- Wenn nicht angegeben, wird die Diskette zweiseitig
- formatiert. Default: zweiseitig.
- -i Die Anzahl der physikalischen Sektoren zwischen zwei
- logischen Sektoren. Default: 1.
- -v Der Wert, der in die formatierten Sektoren geschrieben
- wird. Normalerweise 0xe5e5. Unabhängig von dieser Ein-
- stellung werden die Spuren 0 und 1 immer mit Nullen ge-
- füllt.
- -n Die Versionsnummer, die in den Bootsektor geschrieben
- wird. Werte größer als 0x1000000 ergeben eine zufällige
- Versionsnummer.
- -N Es wird kein Bootsektor angelegt.
- -B Es wird nicht formatiert (nur Bootsektor).
- -x Der Bootsektor wird ausführbar gemacht.
- -q Es erfolgen keine Sicherheitsabfragen.
- -l Es wird der angegebene Diskettenname (Volume-Label) erzeugt.
- Drive Das zu formatierende Laufwerk. Es gilt nur der erste
- Buchstabe, d.h. es sind äquivalent:
- format A:
- format a:
- format a
- format abcdefg
- format
- Default ist Laufwerk A:.
-
-
- Beispiele:
- 1) format
- Formatiert die Diskette in Laufwerk A: mit 2 Seiten, 80 Tracks pro
- Seite, 9 Sektoren pro Track mit Interleave 1 und Virgin 0xe5e5. Es
- wird ein nicht-ausführbarer Bootsektor angelegt. Es wird kein Dis-
- kettenname erzeugt
- => der Standardaufruf zum Formatieren von Disketten.
- 2) format B: -ldisk1
- Formatiert die Diskette in Laufwerk B: mit den unter 1) beschrie-
- benen Standardwerten. Außerdem wird der Diskettenname "disk1" er-
- zeugt.
- 3) format -s10 B:
- Formatiert die Diskette in Laufwerk B: mit 10 Sektoren pro Track.
- 4) format -s10 -q B:
- Wie 3), aber ohne Sicherheitsabfrage.
- 5) format -s10 -v0 -N
- Formatiert die Diskette in Laufwerk A: mit 10 Sektoren pro Track.
- Die Sektoren werden mit Nullen gefüllt. Es wird kein Bootsektor
- angelegt. Es erfolgt eine Sicherheitsabfrage wegen eines unge-
- wöhnlichen Virgin-Wertes (-v0).
- 6) format -s10 -v0 -N -q
- Wie 5), aber ohne Sicherheitsabfrage.
-
-
- Vorsicht:
- Die Parameter -i (Interleave) und -v (Virgin) sollten nur in
- Sonderfällen geändert werden. Der Interleave-Faktor muß mit der
- Anzahl der Sektoren pro Track teilerfremd sein (wird vom Pro-
- gramm nicht überprüft!!!!)
-
-
- Laufzeit:
- format (Standardwerte zweiseitig)
- dauert ca. 1 Minute 38 Sekunden
- format -1 (Standardwerte einseitig)
- dauert ca. 50 Sekunden
- format -B (Anlegen eines Bootsektors ohne Formatierung)
- dauert ca. 2 Sekunden
- (Alle Zeiten incl. Ladezeit des format-Programms von Festplatte,
- beim Aufruf mit -q [ohne Sicherheitsabfrage]. Gemessen mit dem
- time-Kommando.)
-
- -----
- gem - Benutzung der Accessories
-
- Dateien: gem.prg, gem.rsc
- Source: gem.c
- Syntax: gem
-
- Es wird ein GEM-Desktop mit Menüzeile angezeigt. Von dieser Menüzeile aus
- können die installierten Accessories benutzt werden. Außerdem enthält
- die Menüzeile weitere Menüs, deren Einträge Shellkommandos sind. Durch
- Anwählen werden diese Kommandos von der aufrufenden Shell (durch die
- system()-Funktion über den _shell_p-Zeiger) ausgeführt.
- Der Menübaum befindet sich in der Datei gem.rsc. Mit einem Resource
- Construction Program können die Menüs verändert werden. Es können
- beliebig viele weitere Menüs und Menüpunkte hinzugefügt oder alte ge-
- löscht werden. Allerdings darf sich in der RSC-Datei nur ein Objektbaum
- befinden.
- gem wird durch anklicken eines Menüeintrages namens `exit' beendet. Dieser
- Eintrag befindet sich normalerweise im Desk-Menü, darf sich aber auch in
- einem der anderen Menüs befinden. Achtung: wenn es keinen Menüeintrag
- namens `exit' gibt, kann gem nicht beendet werden. Aus diesem Grund sollte
- das Desk-Menü unverändert bleiben.
-
- -----
- showpic - Screenformat-Bilder anzeigen
-
- Datei: showpic.sh
- Syntax: showpic
-
- Dieses Shellscript ist ein Beispiel zur Programmierung der Shell. Es läßt
- den Anwender eine Datei in einer Fileselect-Box auswählen und bestimmt
- anhand des Dateinamen-Extenders, ob es sich um eine Doodle-Datei (.PIC,
- Dateilänge 32000 Bytes) oder eine Degas-Datei (.PI3, 32066 Bytes) handelt,
- und bestimmt entsprechend die Länge des Dateiheaders (Doodle 0, Degas 34
- Bytes). Wenn der Extender weder .PIC noch .PI3 ist, muß der Anwender die
- Länge des Headers eingeben.
- Danach wird das Bild geladen und angezeigt. Nach einem Druck auf ENTER wird
- der Bildschirm gelöscht, und das ganze beginnt von vorne, bis der Anwender
- "Abbruch" anwählt.
-
- Das Script demonstriert die vielfältigen Möglichkeiten der Shell-Pro-
- grammierung mit Variablen, Pipes, Eingaben, Shellflags und dem if- und
- while-Kommando.
-
- ----------------------------------------------------------------------------
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- An diese Stelle können weitere Erklärungen hinzugefügt werden, die bei Druck
- auf Help nach einem Kommando erscheinen sollen, z.B. Erklärungen zu eigenen
- externen Kommandos oder Abschnitte aus okami.doc. Bitte das Format beachten:
- - Zeile aus fünf Minuszeichen
- - Zeile, die mit dem Stichwort beginnt
- - Erklärung geht bis zur nächsten Zeile aus fünf Minuszeichen (exkl.)
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-